Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Usage  














Module:Legislationuk







Add links
 









Module
Talk
 

















Read
View source
View history
 








Tools
   


Actions  



Read
View source
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Get shortened URL
Download QR code
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 





Permanently protected module

From Wikipedia, the free encyclopedia
 


Usage

{{#invoke:Legislationuk|function_name}}

local p = {}

function p.main( frame )
 local args
 if frame:getParent().args[ 1 ] then args = frame:getParent().args else args = frame.args end
 local input = ""
 local divider = "|"
 local o = "<table class=\"wikitable sortable\"style=\"border-style:none none none none\"><tr><th colspan=3>Short title, or popular name<th>Citation<th class=unsortable>[[Royal assent]] (or the start of session)<tr class=expand-child><th colspan=5>Long title<tr class=expand-child><th colspan=5 style=\"background:#fff;border-style:none none none none\"><div style=min-height:0.25em></div>"
 local h = {}
 for i = 1, 2 do
  h[ i ] = mw.ustring.char( i + 57343 )
 end
 for i, _ in pairs( args ) do
  input = args[ i ]
  if mw.ustring.find( input, "{{|" ) and mw.ustring.find( input, "}}" ) then
   input = mw.ustring.gsub( input, "%[%[(.*)|(.*)%]%]", "%[%[%1" .. h[ 1 ] .. "%2%]%]" )
   input = mw.ustring.gsub( input, "style=", h[ 2 ] )
   local leg = {}
   local s = ""
   local c = 1
   local par
   input = mw.ustring.sub( input, mw.ustring.find( input, "|" ) + 1)
   while input ~= "" do
    if mw.ustring.find( input, "|" ) then divider = "|" else divider = "}" end
    s = mw.ustring.sub( input, 1, mw.ustring.find( input, divider ) - 1)
    if mw.ustring.find( s, "=" ) then
     par = mw.ustring.sub( s, 1, mw.ustring.find( s, "=" ) - 1)
     leg[ par ] = mw.ustring.sub( s, mw.ustring.find( s, "=" ) + 1)
    else
     par = c
     leg[ c ] = mw.ustring.sub( input, 1, mw.ustring.find( input, divider ) - 1)
     c = c + 1
    end
    leg[ par ] = mw.ustring.gsub( leg[ par ], "%[%[(.*)" .. h[ 1 ] .. "(.*)%]%]", "%[%[%1|%2%]%]")
    leg[ par ] = mw.ustring.gsub( leg[ par ], h[ 2 ], "style=")
    if divider == "|" then input = mw.ustring.sub( input, mw.ustring.find( input, "|" ) + 1) else input = "" end
   end
   o = o .. p.act( leg )
  end
 end
 o = o .. "</table>" .. frame:expandTemplate{ title = "notelist" }
 return o
end

function p.act( args )
 local data = mw.loadData( "Module:Legislationuk/data" )
 local legShortTitle = args[ 1 ] or ""
 local link = args[ "link" ] or ""
 local legNote1 = args[ "note1" ] or ""
 local cyShortTitle = args[ "cyshort" ] or ""
 local legType = args[ 2 ] or ""
 local legNumber = args[ 3 ] or ""
 local legNote2 = args[ "note2" ] or ""
 local legDate = args[ 4 ] or ""
 local legNote3 = args[ "note3" ] or ""
 local maintained = args[ "maintained" ] or ""
 local archived = args[ "archived" ] or ""
 local repealed = args[ "repealed" ] or ""
 local legLongTitle = args[ 5 ] or ""
 local legNote4 = args[ "note4" ] or ""
 local cyLongTitle = args[ "cylong" ] or ""
 local url = args[ "url" ] or ""
 legDate = os.time {day = tonumber( mw.ustring.sub( legDate, 1, 2 ) ), month = tonumber( mw.ustring.sub( legDate, 4, 5 ) ), year = tonumber( mw.ustring.sub( legDate, 7 ) ) }
 local o = "<tr><td colspan=3 style=background:#"
 if repealed == "y" then o = o .. "f2cece;border-color:#bfa3a3" else o = o .. "ececec" end
 o = o .. " data-sort-value=\""
 if mw.ustring.find( legShortTitle, "%(No%..*%d+%)" ) then
  o = o .. mw.ustring.gsub( legShortTitle, "(.*)%(No%..*(%d+)%) (.*)", "%1%3% %2" )
 else
  o = o .. legShortTitle .. "1\""
 end
 o = o .. "><div style=display:flex;align-items:center;width:42em;max-width:51vw class=box><div style=flex-grow:9>\'\'\'[["
 if link ~= "" then o = o .. link .. "|" end
 o = o .. legShortTitle .. "]]\'\'\'" .. legNote1
 if repealed == "y" then o = o .. " (repealed)" end
 if cyShortTitle ~= "" then o = o .. "<br><span style=font-size:0.975em;font-weight:700;font-style:italic>" .. cyShortTitle .. "</span>" end
 o = o .. "</div><div style=float:right;min-width:"
 if maintained == "y" and archived ~= "n" then o = o .. "4.5" else o = o .. "2.25" end
 o = o .. "em;max-width:"
 if maintained == "y" and archived ~= "n" then o = o .. "4.5" else o = o .. "2.25" end
 o = o .. "em>"
 if maintained == "y" then
  local lt = { [ "public" ] = "ukpga", [ "local" ] = "ukla", [ "asp" ] = "asp", [ "asc" ] = "asc", [ "anaw" ] = "anaw", [ "nawm" ] = "mwa", [ "ania" ] = "nia", [ "mnia" ] = "mnia", [ "church" ] = "ukcm", [ "private" ] = "ukppa", [ "personal" ] = "ukppa" }
  local url = "https://www.legislation.gov.uk/" .. lt[ legType ] .. "/" .. os.date( "%Y", legDate ) .. "/" .. legNumber .. "/contents"
  o = o .. "[[File:Legislation.gov.uk External.svg|29x14px|link=" .. url .. "]]"
 end
 local s
 if maintained == "y" and archived ~= "n" then o = o .. "<wbr>" end
 if archived ~= "n" then
  if legType == "nawm" or legType == "anaw" or legType == "asc" then
   o = o .. "[[File:Library External.svg|26x17px|link=https://archives.library.wales/index.php/" .. url .. "]]"
  else
   local lt = { [ "public" ] = "PU", [ "local" ] = "PB", [ "personal" ] = "PB", [ "private" ] = "PB" }
   if legDate < os.time {day=1, month=1, year=1963} then
    for _, t in ipairs( data ) do
     if legDate >= t.sDate.date and legDate <= t.eDate.date then
      s = t.archive
     end
    end
   end
   local lt2 = { [ "public" ] = legNumber, [ "local" ] = p.roman { legNumber }, [ "personal" ] = legNumber, [ "private" ] = legNumber, [ "asp" ] = legNumber, [ "asc" ] = legNumber, [ "anaw" ] = legNumber, [ "nawm" ] = legNumber, [ "ania" ] = legNumber, [ "mnia" ] = legNumber, [ "church" ] = legNumber }
   url = "https://archives.parliament.uk/collections/getrecord/GB61_HL_PO_" .. lt[ legType ] .. "_1_" .. os.date( "%Y", legDate ) .. "_" .. (s or "") .. "c" .. lt2[ legType ]
   o = o .. "[[File:Parliamentary Archives External.svg|27x19px|link=" .. url .. "]]"
  end
 end
 o = o .. "</div></div><td "
 if repealed == "y" then o = o .. "style=background:#fff5f5;border-color:#bfa3a3 " end
 o = o .. "data-sort-value="
 if legDate >= os.time{ day = 1, month = 1, year = 1963 } then
  o = o .. os.time{ day = 1, month = 1, year = tonumber (os.date( "%Y", legDate ) ) } + legNumber
 else
  for _, t in ipairs( data ) do
   if tonumber( legDate ) >= tonumber( t.sDate.date ) and tonumber( legDate ) <= tonumber( t.eDate.date ) then
    o = o .. tonumber( t.sDate.date ) + legNumber
   end
  end
 end
 o = o .. "><div style=width:10em;max-width:18vw><span class=nowrap>"
 if legDate < os.time {day=1, month=1, year=1963} then
  for _, t in ipairs( data ) do
   if tonumber( legDate ) >= tonumber( t.sDate.date ) and tonumber( legDate ) <= tonumber( t.eDate.date ) then
    o = o .. t.citation
   end
  end
 else
  o = o .. os.date( "%Y", legDate )
 end
 local lt = { [ "public" ] = "c. " .. legNumber, [ "local" ] = "c. " .. p.roman { legNumber }, [ "personal" ] = "c. \'\'" .. legNumber .. "\'\'", [ "private" ] = "c. \'\'" .. legNumber .. "\'\'", [ "asp" ] = "asp " .. legNumber, [ "asc" ] = "asc " .. legNumber .. "<br>\'\'" .. os.date( "%Y", legDate ) .. " dsc " .. legNumber .. "\'\'", [ "anaw" ] = "anaw " .. legNumber .. "<br>\'\'" .. os.date( "%Y", legDate ) .. " dccc " .. legNumber .. "\'\'", [ "nawm" ] = "nawm " .. legNumber .. "<br>\'\'" .. os.date( "%Y", legDate ) .. " mccc " .. legNumber .. "\'\'", [ "ania" ] = "c. " .. legNumber .. " (N.I.)", [ "mnia" ] = "c. " .. legNumber .. " (N.I.)", [ "church" ] = "No. " .. legNumber }
 o = o .. " " .. lt[ legType ] .. legNote2 .. "</span></div><td"
 if repealed == "y" then o = o .. " style=background:#fff5f5;border-color:#bfa3a3" end
 o = o .. "><div style=width:9em;max-width:18vw>" .. os.date("*t", legDate).day .. " " .. os.date("%B %Y", legDate ) .. legNote3 .. "</div><tr class=expand-child><td colspan=5"
 if repealed == "y" then o = o .. " style=background:#fff5f5;border-color:#bfa3a3" end
 o = o .. "><div style=max-width:fit-content"
 if cyLongTitle ~= "" then
  o = o .. " class=box><div style=display:inline-block;padding-right:1%;max-width:49%;vertical-align:top"
 end
 o = o .. ";max-height:9em;overflow:auto>"
 if legLongTitle ~= "" then o = o .. legLongTitle .. legNote4 else o = o .. "&nbsp;" end
 o = o .. "</div>"
 if cyLongTitle ~= "" then
  o = o .. "<div style=display:inline-block;float:right;padding-left:1%;max-width:49%;vertical-align:top;max-height:9em;overflow:auto;font-style:italic>" .. cyLongTitle .. "</div></div>"
 end
 local c = 1
 local n = 0
 local po = args[ "po1" ]
 while po do
  local poIsShortTitle = args[ "po" .. c .. "short" ]
  local poNote1 = args[ "po" .. c .. "note1" ] or ""
  local poYearOffset = args[ "po" .. c .. "year" ] or ""
  local poIsLongTitle = args[ "po" .. c .. "long" ]
  local poLongTitle
  if poIsLongTitle == "n" then
   poLongTitle = ""
   n = n + 1
  else
   poLongTitle = args[ c + 5 - n ]
  end
  local poNote2 = args[ "po" .. c .. "note2" ] or ""
  o = o .. p.po{po, poIsShortTitle, poNote1, poLongTitle, poNote2, poYearOffset, legDate }
  c = c + 1
  po = args[ "po" .. c ]
 end
 o = o .. "<tr class=expand-child><td colspan=5 style=\"border-style:none none none none;background:#fff\"><div style=min-height:.25em></div>"
 return o
end

function p.po( args )
 local frame = mw.getCurrentFrame()
 local o = "<tr class=expand-child><td style=\"background:#fff;width:1em;border-style:none solid none none\">&nbsp;<td style=background:#f5fdff;max-width:61em colspan=4><div"
 if args[ 2 ] ~= "n" then
  o = o .. ">\'\'\'[[" .. args[ 1 ] .. "]]\'\'\'" .. args[ 3 ]
  if args[ 6 ] == "y" then
   o = o .. frame:extensionTag( "ref", "Although passed in " .. os.date("%Y", args[ 7 ]) .. ", the short title is specified as the " .. args[ 1 ] .. ".", { name = mw.hash.hashValue( "crc32b", args[ 1 ] ), group = "lower-alpha" } )
  end
  if args[ 4 ] ~= "" then
   return o .. "<div style=max-height:7em;overflow:auto>" .. args[ 4 ] .. args[ 5 ]
  else
   return o
  end
 else
  o = o .. " style=max-height:8.25em;overflow:auto>" .. args[ 1 ] .. args[ 3 ]
  return o
 end
end

function p.ordinal( args )
 local ordinal, digit = {"st", "nd", "rd"}, mw.ustring.sub( args, -1 )
 if tonumber( digit ) > 0 and tonumber( digit ) <= 3 and mw.ustring.sub( args, -2 ) ~= 11 and mw.ustring.sub( args, -2 ) ~= 12 and mw.ustring.sub( args, -2 ) ~= 13 then
  return args .. ordinal[ tonumber( digit ) ]
 else
  return args .. "th"
 end
end

function p.roman( args )
 local inputRoman = tonumber( args[ 1 ] )
 if inputRoman < 400 then
  inputRoman = tostring( inputRoman )
  return mw.ustring.lower( require("Module:Roman").main{ inputRoman } )
 elseif inputRoman == 400 then
  return "cccc"
 elseif inputRoman < 500 then
  inputRoman = inputRoman - 400
  inputRoman = tostring( inputRoman )
  return "cccc" .. mw.ustring.lower( require("Module:Roman").main{ inputRoman } )
 else
  return ""
 end
end

function p.header( frame )
 local data = mw.loadData( "Module:Legislationuk/data" )
 local pargs = frame:getParent().args
 local args = frame.args
 local inputType = pargs[ 1 ] or args[ 1 ] or ""
 local inputState = pargs[ "state" ] or args[ "state" ] or ""
 local inputNumber = tonumber( pargs[ 2 ] ) or tonumber( args[ 2 ] ) or ""
 local inputSession = pargs[ "session" ] or args[ "session" ] or ""
 local actsPublic = tonumber( pargs[ 3 ] ) or tonumber( args[ 3 ] ) or 0
 local actsLocal = tonumber( pargs[ 4 ] ) or tonumber( args[ 4 ] ) or 0
 local actsPrivate = tonumber( pargs[ 5 ] ) or tonumber( args[ 5 ] ) or 0
 local currentSession = ""
 local o = ""
 if inputState == "scotland" or inputState == "wales" or inputState == "northern ireland" then
  inputType = "year"
  inputNumber = tonumber( pargs[ 1 ] ) or tonumber( args[ 1 ] ) or 0
  actsPublic = tonumber( pargs[ 2 ] ) or tonumber( args[ 2 ] ) or 0
  actsLocal = tonumber( pargs[ 3 ] ) or tonumber( args[ 3 ] ) or 0
 end
 local acts = actsPublic + actsLocal + actsPrivate
 if inputState == "scotland" then
  o = o .. frame:preprocess( "{{DEFAULTSORT:List of Acts of the Scottish Parliament, " .. inputNumber .."}}" )
 elseif inputState == "wales" then
  o = o .. frame:preprocess( "{{DEFAULTSORT:List of Acts of the Welsh Parliament, " .. inputNumber .."}}" )
 elseif inputState == "northern ireland" then
  if inputNumber >= 2000 then
   o = o .. frame:preprocess( "{{DEFAULTSORT:List of Acts of the Northern Ireland Assembly, " .. inputNumber .."}}" )
  end
 else
  if inputType == "year" then
   o = o .. frame:preprocess( "{{DEFAULTSORT:List of Acts of the Parliament of the United Kingdom, " .. inputNumber .."}}" )
  else
   if inputSession == "only" then
    o = o .. frame:preprocess( "{{DEFAULTSORT:List of Acts of the " .. p.ordinal( inputNumber ) .. " Parliament of the United Kingdom}}" )
   else
    o = o .. frame:preprocess( "{{DEFAULTSORT:List of Acts of the " .. p.ordinal( inputNumber ) .. " Parliament of the United Kingdom, " .. p.ordinal( inputSession ) .. " Session}}" )
   end
  end
 end
 o = o .. " " .. frame:expandTemplate{ title = "Use British English", args = { date = "July 2021" } } .. " " .. frame:expandTemplate{ title = "Use dmy dates", args = { date = "July 2021" } } .. " " .. frame:expandTemplate{ title = "Short description", args = { "None" } } .. " "
 if inputState == "UK" or inputState == "" then
  o = o .. frame:expandTemplate{ title = "British legislation lists", args = { "uk" } }
 else
  o = o .. frame:expandTemplate{ title = "British legislation lists", args = { "devolved" } }
 end
 o = o .. "\n\n" .. "This is a list of [["
 if inputState == "scotland" then
  o = o .. "Act of the Scottish Parliament|acts of the Scottish Parliament]] "
 elseif inputState == "wales" then
  if inputNumber >= 2021 then
   o = o .. "Act of Senedd Cymru|acts of Senedd Cymru]] "
  elseif inputNumber == 2020 then
   o = o .. "Act of the National Assembly for Wales|acts of the National Assembly for Wales]] and [[Act of Senedd Cymru|acts of Senedd Cymru]] "
  elseif inputNumber <= 2020 and inputNumber >= 2012 then
   o = o .. "Act of the National Assembly for Wales|acts of the National Assembly for Wales]] "
  else
   o = o .. "Measure of the National Assembly for Wales|measures of the National Assembly for Wales]] "
  end
 elseif inputState == "northern ireland" then
  if inputNumber >= 2000 then
   o = o .. "Act of the Northern Ireland Assembly|acts of the Northern Ireland Assembly]] "
  end
 else
  o = o .. "Act of Parliament (UK)|acts]] of the "
  if inputType == "parliament" and inputSession == "only" then o = o .. p.ordinal( inputNumber ) .. " " elseif inputType == "parliament" then o = o .. p.ordinal( inputSession ) .. " [[Legislative session|session]] of the " .. p.ordinal( inputNumber ) .. " " end
  o = o .. "[[Parliament of the United Kingdom]]"
 end
 if inputType == "year" then
  o = o .. " passed in " .. inputNumber .. "."
 else
  o = o .. ", which "
  for _, t in ipairs( data ) do
   if t.session then
    if tonumber( inputNumber ) == tonumber( t.session.parliament ) and ( tonumber( inputSession ) == tonumber( t.session.number ) or ( inputSession == "only" and tonumber( t.session.number ) == 1 ) ) then
     if t.eDate == "current" then
      if inputSession == "only" then o = o .. "has so far consisted of a single session that " end
      o = o .. "began on " .. os.date( "*t", t.sDate.date ).day .. " " .. os.date("%B %Y", t.sDate.date )
      if t.sDate.citation.work ~= "LG" then o = o .. frame:extensionTag( "ref", p.citation( t.sDate.citation ) .. "." ) else o = o .. frame:extensionTag( "ref", p.citation( t.sDate.citation ) ) end
      o = o .. " and has not yet concluded."
      currentSession = "y"
     else
      if inputSession == "only" then o = o .. "consisted of a single session that " end
      o = o .. "ran from " .. os.date( "*t", t.sDate.date ).day .. " " .. os.date("%B %Y", t.sDate.date )
      if t.sDate.citation.work ~= "LG" then o = o .. frame:extensionTag( "ref", p.citation( t.sDate.citation ) .. "." ) else o = o .. frame:extensionTag( "ref", p.citation( t.sDate.citation ) ) end
      o = o .. " until " .. os.date( "*t", t.eDate.date ).day .. " " .. os.date("%B %Y", t.eDate.date ) .. "."
      if t.eDate.citation.work ~= "LG" then o = o .. frame:extensionTag( "ref", p.citation( t.eDate.citation ) .. "." ) else o = o .. frame:extensionTag( "ref", p.citation( t.eDate.citation ) ) end
     end
    end
   end
  end
 end
 if inputState == "scotland" then
  o = o .. " Acts of the Scottish Parliament are enacted by the [[Scottish Parliament]], which has legislative authority over [[Devolution in the United Kingdom|devolved]] matters in relation to [[Scotland]] under the authority of the [[Scotland Act 1998]]." .. frame:extensionTag( "ref", "{{citation|title=Scotland Act 1998|page=1998 c. 46, s. 28 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/1998/46/section/28}}." )
 elseif inputState == "wales" then
  if inputNumber >= 2020 then
   o = o .. " Acts of Senedd Cymru are enacted by [[Senedd Cymru]] (the Welsh Parliament; or simply the Senedd), which has"
  elseif inputNumber >= 2012 then
   o = o .. " Acts of the National Assembly for Wales are [[Act of Senedd Cymru|acts of Senedd Cymru]] enacted by [[Senedd Cymru]] (the Welsh Parliament; or simply the Senedd) under its former name of the National Assembly for Wales." .. frame:extensionTag( "ref", "{{citation|title=Senedd and Elections (Wales) Act 2020|page=2020 anaw 1, s. 2 |no-pp=yes|url=https://www.legislation.gov.uk/anaw/2020/1/section/2}}." ) .. " It has"
  else
   o = o .. " Measures of the National Assembly for Wales were enacted by [[Senedd Cymru]] (the Welsh Parliament; or simply the Senedd) under its former name of the National Assembly for Wales," .. frame:extensionTag( "ref", "{{citation|title=Senedd and Elections (Wales) Act 2020|page=2020 anaw 1, s. 2 |no-pp=yes|url=https://www.legislation.gov.uk/anaw/2020/1/section/2}}." ) .. " as part of its"
  end
  o = o .. " legislative authority over [[Devolution in the United Kingdom|devolved]] matters in relation to [[Wales]] under the authority of the [[Government of Wales Act 2006]]."
  if inputNumber >= 2012 then
   o = o .. frame:extensionTag( "ref", "{{citation|title=Government of Wales Act 2006|page=2006 c. 32, s. 107 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/2006/32/section/107}}." )
   if inputNumber == 2020 then
   o = o .. " Before 6 May 2020, the Senedd was known as the National Assembly for Wales," .. frame:extensionTag( "ref", "{{citation|title=Senedd and Elections (Wales) Act 2020|page=2020 anaw 1, s. 2 |no-pp=yes|url=https://www.legislation.gov.uk/anaw/2020/1/section/2}}." ) .. " and acts passed before that date are accordingly known as acts of the National Assembly for Wales."
   end
  else
   o = o .. frame:extensionTag( "ref", "{{citation|title=Government of Wales Act 2006|page=2006 c. 32, s. 93 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/2006/32/section/93}}." ) .. " It has no longer been possible for the Senedd to pass measures since 5 May 2011, when it was conferred with the power to pass [[acts of Senedd Cymru]] (then known as acts of the National Assembly for Wales) following [[2011 Welsh devolution referendum|a referendum]]"
   if inputNumber == 2011 then o = o .. "," else o = o .. "." end
   o = o .. frame:extensionTag( "ref", "{{citation|title=Government of Wales Act 2006|page=2006 c. 32, ss. 106 & 107 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/2006/32/contents}}; {{citation|title=Government of Wales Act 2006 (Commencement of Assembly Act Provisions, Transitional and Saving Provisions and Modifications) Order 2011|page=S.I. 2011/1011 (W. 150) (C. 42), arts. 2 & 3 |no-pp=yes|url=https://www.legislation.gov.uk/wsi/2011/1011/contents}}." )
   if inputNumber == 2011 then
    o = o .. " although a minor exemption was granted to any proposed measures which had been passed by the National Assembly but not yet given [[royal assent]] at that date." .. frame:extensionTag( "ref", "{{citation|title=Government of Wales Act 2006|page=2006 c. 32, s. 106A |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/2006/32/section/106A}}." )
   end
  end
 elseif inputState == "northern ireland" then
  if inputNumber >= 2000 then
   o = o .. " Acts of the Northern Ireland Assembly are enacted by the [[Northern Ireland Assembly]], which has legislative authority over [[Devolution in the United Kingdom|devolved]] matters in relation to [[Northern Ireland]] under the authority of the [[Northern Ireland Act 1998]]." .. frame:extensionTag( "ref", "{{citation|title=Northern Ireland Act 1998|page=1998 c. 47, s. 5 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/1998/47/section/5}}." )
  end
 end
 if inputType == "year" then inputNumber = tonumber( inputNumber ) end
 o = o .. "\n\n"
 if inputState == "wales" then
  o = o .. "All legislation passed by the Senedd is [[Multilingualism|bilingual]], with the [[English language|English]] and [[Welsh language|Welsh]] texts being equally authoritative."
  if inputNumber <= 2020 then o = o .. frame:extensionTag( "ref", "{{citation|title=Government of Wales Act 2006|page=2006 c. 32, s. 156(1) |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/2006/32/section/156}}." ) end
  if inputNumber >= 2020 then o = o .. frame:extensionTag( "ref", "{{citation|title=Legislation (Wales) Act 2019|page=2019 anaw 4, s. 5 |no-pp=yes|url=https://www.legislation.gov.uk/anaw/2019/4/section/5}}." ) end
  o = o .. "\n"
 end
 if inputState == "wales" and inputNumber <= 2011 then
  o = o .. "Measures "
 else
  o = o .. "Acts "
 end
 if inputState == "scotland" or inputState == "wales" or ( inputState == "northern ireland" and inputNumber >= 2000 ) then
  o = o .. "are [[Citation of United Kingdom legislation|cited]] by calendar year, in the same fashion as [[Act of Parliament (UK)|acts of Parliament of the United Kingdom]]."
 else
  if ( inputType == "year" and inputNumber >= 1963 ) or ( inputType == "parliament" and tonumber( inputNumber ) >= 43 ) or ( inputType == "parliament" and tonumber( inputNumber ) == 42 and tonumber( inputSession ) >= 4 ) then
   o = o .. "passed since 1963 are [[Citation of United Kingdom legislation|cited]] by calendar year," .. frame:extensionTag( "ref", "{{citation|title=Acts of Parliament Numbering and Citation Act 1962|page=10 & 11 Eliz. 2. c. 34, s. 1 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/Eliz2/10-11/34/section/1}}." )
   if inputType == "parliament" and tonumber( inputNumber ) == 42 and tonumber( inputSession ) == 4 then
    o = o .. " while the convention used for earlier acts is to cite"
   else
    o = o .. " as opposed to the convention used for earlier acts of citing"
   end
   o = o .. " the [[Regnal years of English monarchs|regnal year(s)]] in which the relevant "
   if inputType == "year" then
    o = o .. "[[Legislative session|parliamentary session]]"
   else
    o = o .. "parliamentary session"
   end
   o = o .. " was held." .. frame:extensionTag( "ref", "{{citation|author1=Law Commission|author2=Scottish Law Commission|title=Report on the Interpretation Act 1889 and certain other enactments relating to the construction and operation of Acts of Parliament and other instruments|page=(Cmnd. 7235; Law Com. No. 90; Scot Law Com. No. 53, 1978) para. 7A |no-pp=yes|url=https://www.scotlawcom.gov.uk/files/8512/7989/6586/rep53.pdf}}; cf. {{citation|title=An Act for shortening the Language used in Acts of Parliament|page=13 & 14 Vict. c. 21, s. 3 (now rep.) |no-pp=yes|url=https://archives.parliament.uk/collections/getrecord/GB61_HL_PO_PU_1_1850_13and14V1n40}} and the {{citation|title=Interpretation Act 1889|page=52 & 53 Vict. c. 63, s. 35(1) (now rep.) |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/1889/63/contents}}." )
  else
   o = o .. "passed before 1963 are [[Citation of United Kingdom legislation|cited]] by the [[Regnal years of English monarchs|regnal year(s)]] in which the relevant "
   if inputType == "year" then
    o = o .. "[[Legislative session|parliamentary session]]"
   else
    o = o .. "parliamentary session"
   end
   o = o .. " was held," .. frame:extensionTag( "ref", "{{citation|author1=Law Commission|author2=Scottish Law Commission|title=Report on the Interpretation Act 1889 and certain other enactments relating to the construction and operation of Acts of Parliament and other instruments|page=(Cmnd. 7235; Law Com. No. 90; Scot Law Com. No. 53, 1978) para. 7A |no-pp=yes|url=https://www.scotlawcom.gov.uk/files/8512/7989/6586/rep53.pdf}}; cf. {{citation|title=An Act for shortening the Language used in Acts of Parliament|page=13 & 14 Vict. c. 21, s. 3 (now rep.) |no-pp=yes|url=https://archives.parliament.uk/collections/getrecord/GB61_HL_PO_PU_1_1850_13and14V1n40}} and the {{citation|title=Interpretation Act 1889|page=52 & 53 Vict. c. 63, s. 35(1) (now rep.) |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/1889/63/contents}}." ) .. " as opposed to the convention used for later acts of citing the calendar year." .. frame:extensionTag( "ref", "{{citation|title=Acts of Parliament Numbering and Citation Act 1962|page=10 & 11 Eliz. 2. c. 34, s. 1 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/Eliz2/10-11/34/section/1}}." )
  end
 end
 o = o .. " Each "
 if inputState == "wales" and inputNumber <= 2011 then
  o = o .. "measure"
 else
  o = o .. "act"
 end
 o = o .. " passed in a respective "
 if ( inputType == "year" and inputNumber >= 1963 ) or ( inputType == "parliament" and tonumber( inputNumber ) >= 43 ) or ( inputType == "parliament" and tonumber( inputNumber ) == 42 and tonumber( inputSession ) == 5 ) then
  o = o .. "year"
 elseif inputType == "parliament" and tonumber( inputNumber ) == 42 and tonumber( inputSession ) == 4 then
  o = o .. "session or year"
 else
  o = o .. "session"
 end
 o = o .. " is "
 if inputState == "scotland" then
  o = o .. "numbered consecutively with [[Arabic numerals]], following the prefix \"asp\"." .. frame:extensionTag( "ref", "{{citation|title=Interpretation and Legislative Reform (Scotland) Act 2010|page=2010 asp 10, ss. 9 & 38 |no-pp=yes|url=https://www.legislation.gov.uk/asp/2010/10/section/38}}; formerly the {{citation|title=Scotland Act 1998 (Transitory and Transitional Provisions) (Publication and Interpretation etc. of Acts of the Scottish Parliament) Order 1999|page=S.I. 1999/1379, art. 5(2) (rev. by art. 8 & s. 55(1) of the Interpretation and Legislative Reform (Scotland) Act 2010) |no-pp=yes|url=https://www.legislation.gov.uk/uksi/1999/1379/article/5}}." )
 elseif inputState == "wales" then
  o = o .. "numbered consecutively with [[Arabic numerals]], following the prefix \""
  if inputNumber >= 2021 then o = o .. "asc\"" elseif inputNumber == 2020 then o = o .. "anaw\"or\"asc\" respectively" elseif inputNumber <= 2020 and inputNumber >= 2012 then o = o .. "anaw\"" else
   o = o .. "nawm\"" end
  o = o .. " (or, in Welsh, \""
  if inputNumber >= 2021 then o = o .. "dsc" elseif inputNumber == 2020 then o = o .. "dccc\"or\"dsc" elseif inputNumber <= 2020 and inputNumber >= 2012 then o = o .. "dccc" else
   o = o .. "mccc" end
  o = o .. "\")."
  o = o .. frame:extensionTag( "ref", "{{citation|title=Government of Wales Act 2006|page=2006 c. 32, s. 115 |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/2006/32/section/115}}; {{citation|title=Interpretation Act 1978|page=1978 c. 30, ss. 19(1), 23B & 23C(1) |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/1978/30/contents}}; {{citation|title=Legislation (Wales) Act 2019|page=2019 anaw 4, s. 22 |no-pp=yes|url=https://www.legislation.gov.uk/anaw/2019/4/section/22}}." )
 elseif inputState == "northern ireland" then
  o = o .. "given a chapter number (abbreviated \"c.\") denoted by [[Arabic numerals]]," .. frame:extensionTag( "ref", "{{citation|title=Interpretation Act (Northern Ireland) 1954|page=1954 c. 33 (N.I.), ss. 1(a) & 47(1) |no-pp=yes|url=https://www.legislation.gov.uk/apni/1954/33/contents}}; {{citation|title=Interpretation Act 1978|page=1978 c. 30, ss. 19(1) & 24(1) |no-pp=yes|url=https://www.legislation.gov.uk/ukpga/1978/30/contents}}." ) .. " and citations are usually followed by the suffix \"(N.I.)\" so as to prevent confusion with acts of Parliament of the United Kingdom."
 else
  o = o .. "given a chapter number (abbreviated \"c.\"), denoted by [[Arabic numerals]] in the case of [[Act of Parliament (UK)#Public general acts|public general acts]], lowercase [[Roman numerals]] in the case of [[Local and personal Acts of Parliament (United Kingdom)#Local acts|local acts]], or [[Italic type|italicised]] Arabic numerals in the case of [[Local and personal Acts of Parliament (United Kingdom)#Personal acts|personal acts]]. These run as separate series." .. frame:extensionTag( "ref", "{{citation|title=Erskine May|page=para. 30.75 |no-pp=yes|url=https://erskinemay.parliament.uk/section/5598/printing-and-promulgation-of-statutes|access-date=9 September 2021|archive-url=https://web.archive.org/web/20210909205918/https://erskinemay.parliament.uk/section/5598/printing-and-promulgation-of-statutes/|archive-date=9 September 2021}}." )
 end
 o = o .. "\n\n"
 if inputState == "wales" and inputNumber == 2020 then
  o = o .. actsPublic .. " acts of the National Assembly for Wales and " .. actsLocal .. " acts of Senedd Cymru "
 else
  o = o .. actsPublic + actsLocal + actsPrivate
  if inputState == "wales" and inputNumber <= 2011 then
   o = o .. " measure"
  else
   o = o .. " act"
  end
  if acts > 1 then o = o .. "s" end
  if inputState == "scotland" then
   o = o .. " of the Scottish Parliament "
  elseif inputState == "wales" then
   if inputNumber >= 2021 then
    o = o .. " of Senedd Cymru "
   else
    o = o .. " of the National Assembly for Wales "
   end
  elseif inputState == "northern ireland" then
   o = o .. " of the Northern Ireland Assembly "
  else
   o = o .. " of Parliament "
  end
 end
 if inputNumber == tonumber (os.date( "%Y", os.time() ) ) or currentSession == "y" then
  if acts == 1 then
   o = o .. "has"
  else
   o = o .. "have"
  end
  o = o .. " so far been"
 else
  if acts == 1 then
   o = o .. "was"
  else
   o = o .. "were"
  end
 end
 o = o .. " passed "
 if inputType == "year" then
  o = o .. "in " .. inputNumber
 else
  o = o .. "by the " .. p.ordinal( inputNumber ) .. " Parliament in its "
  if inputSession == "only" then
   o = o .. "only"
  else
   o = o .. p.ordinal( inputSession )
  end
  o = o .. " session"
 end
 local actsPublicString = ""
 local actsLocalString = ""
 local actsPrivateString = ""
 if inputState == "scotland" or inputState == "wales" or ( inputState == "northern ireland" and inputNumber >= 2000 ) then
  o = o .. "."
 else
  if actsPublic > 1 then actsPublicString = actsPublic .. " public general acts" else actsPublicString = actsPublic .. " public general act" end
  if actsLocal > 1 then actsLocalString = actsLocal .. " local acts" else actsLocalString = actsLocal .. " local act" end
  if actsPrivate > 1 then actsPrivateString = actsPrivate .. " personal acts" else actsPrivateString = actsPrivate .. " personal act" end
  if actsPublic > 0 and actsLocal > 0 and actsPrivate > 0 then
   o = o .. ": " .. actsPublicString .. ", " .. actsLocalString .. " and " .. actsPrivateString .. "."
  elseif actsPublic > 0 and actsLocal > 0 and actsPrivate == 0 then
   o = o .. ": " .. actsPublicString .. " and " .. actsLocalString .. "."
  elseif actsPublic > 0 and actsLocal == 0 and actsPrivate > 0 then
   o = o .. ": " .. actsPublicString .. " and " .. actsPrivateString .. "."
  elseif actsPublic == 0 and actsLocal > 0 and actsPrivate > 0 then
   o = o .. ": " .. actsLocalString .. " and " .. actsPrivateString .. "."
  elseif actsPublic > 0 and actsLocal == 0 and actsPrivate == 0 then
   if actsPublic == 1 then
    o = o .. ": a public general act."
   else
    if actsPublic == 2 then o = o .. "; both " else o = o .. "; all " end
    if inputNumber == tonumber(os.date( "%Y", os.time() ) ) or currentSession == "y" then o = o .. "are" else o = o .. "were" end
    o = o .. " public general acts."
   end
  elseif actsPublic == 0 and actsLocal > 0 and actsPrivate == 0 then
   if actsLocal == 1 then
    o = o .. ": a local act."
   else
    if actsLocal == 2 then o = o .. "; both " else o = o .. "; all " end
    if inputNumber == tonumber(os.date( "%Y", os.time() ) ) or currentSession == "y" then o = o .. "are" else o = o .. "were" end
    o = o .. " local acts."
   end
  elseif actsPublic == 0 and actsLocal == 0 and actsPrivate > 0 then
   if actsPrivate == 1 then
    o = o .. ": a personal act."
   else
    if actsPrivate == 2 then o = o .. "; both " else o = o .. "; all " end
    if inputNumber == tonumber (os.date( "%Y", os.time() ) ) or currentSession == "y" then o = o .. "are" else o = o .. "were" end
    o = o .. " personal acts."
   end
  end
 end
 o = o .. "\n\n[[File:Cib-gov-uk_(CoreUI_Icons_v1.0.0).svg|18x18px|link=]] indicates that a"
 if inputState == "wales" and inputNumber < 2012 then
  o = o .. " measure"
 else
  o = o .. "n act"
 end
 o = o .." is available to view at [[legislation.gov.uk]], and "
 if inputState == "wales" then
  o = o .. "[[File:Book (CoreUI Icons v1.0.0).svg|18x18px|link=]]"
 else
  o = o .. "[[File:Crowned_Portcullis.svg|18x18px|link=]]"
 end
 o = o .. " indicates the location of the original "
 if inputState == "wales" and inputNumber < 2012 then
  o = o .. "measure"
 else
  o = o .. "act"
 end
 o = o .. " in the "
 if inputState == "wales" then
  o = o .. "[[National Library of Wales]]."
 else
  o = o .. "[[Parliamentary Archives]]."
 end
 return o
end

function p.citation( frame )
 local t = frame or ""
 local o = "{{"
 if t[ "work" ] == "JHC" then
  o = o .. "citation|author=House of Commons|title=Journals of the House of Commons|volume="
  if t.part then o = o .. "\'\'\'" .. t.vol .. " pt. " .. require("Module:Roman").main{ t.part } .. "\'\'\'" else o = o .. t.vol end
  o = o .. "|page"
  if mw.ustring.find( t.page, "–" ) then o = o .. "s" end
  o = o .. "="
  if t.page == "before 1" then o = o .. "before p. 1|no-pp=yes" else o = o .. t.page end
  o = o .. "}}"
 elseif t[ "work" ] == "JHL" then
  o = o .. "citation|author=House of Lords|title=Journals of the House of Lords|volume="
  if t.part ~= "" then o = o .. "\'\'\'" .. t.vol .. " pt. " .. require("Module:Roman").main{ t.part } .. "\'\'\'" else o = o .. t.vol end
  o = o .. "|page"
  if mw.ustring.find( t.page, "–" ) then o = o .. "s" end
  o = o .. "="
  if t.page == "before 1" then o = o .. "before p. 1|no-pp=yes" else o = o .. t.page end
  o = o .. "}}"
 elseif t[ "work" ] == "Hansard" then
  o = o .. "citation|author=Parliament of the United Kingdom|title=Hansard|series=" .. t.series .. "|volume=" .. t.vol
  o = o .. "|page=col"
  if mw.ustring.find( t.col, "–" ) then o = o .. "s" end
  o = o .. ". " .. t.col .. "|no-pp=yes}}"
 elseif t[ "work" ] == "LG" then
  o = o .. "London Gazette|issue=" .. t.issue
  if t.supplement ~= "" then o = o .. "|supp=" .. t.supplement end
  o = o .. "|page"
  if mw.ustring.find( t.page, "–" ) then o = o .. "s" end
  o = o .. "=" .. t.page
  o = o .. "|date=" .. os.date( "*t", t.date ).day .. " " .. os.date("%B %Y", t.date ) .. "}}"
 end
 return o
end

return p

Retrieved from "https://en.wikipedia.org/w/index.php?title=Module:Legislationuk&oldid=1231506177"

Category: 
Modules subject to page protection
Hidden category: 
Wikipedia semi-protected modules
 



This page was last edited on 28 June 2024, at 17:22 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



Privacy policy

About Wikipedia

Disclaimers

Contact Wikipedia

Code of Conduct

Developers

Statistics

Cookie statement

Mobile view



Wikimedia Foundation
Powered by MediaWiki