Andrew P. "Andy" Harris (born January 25, 1957) is an American politician and physician who has been the U.S. Representative for Maryland's 1st congressional district since 2011. He is a member of the Republican Party and is currently the only Republican member of Maryland's congressional delegation; he previously served in the Senate of the Maryland General Assembly.
Early life, education, and career
Harris's father was Zoltán Harris, an anesthesiologist who was born in Miskolc, Hungary, in 1911 and emigrated to the United States in 1950; his mother, Irene, was born in Poland.[3]
Harris earned his B.S. in biology (1977) and his M.D. (1980) from The Johns Hopkins University. The University's Bloomberg School of Hygiene and Public Health conferred the M.H.S. in 1995 in Health Policy & Management and also Health Finance & Management.[3]
Harris served in the Navy Medical Corps and the U.S. Naval Reserve as a lieutenant commander on active duty during Operation Desert Storm and currently serves as a commander.[3] He has worked as an anesthesiologist, as an associate professor of anesthesiology and critical care medicine, and as chief of obstetric anesthesiology at the Johns Hopkins Hospital. Harris also served as commanding officer for the Johns Hopkins Naval Reserve Medical Unit from 1989 to 1992.[3]
Maryland General Assembly
Harris was first elected to the Maryland Senate in 1998 for District 9 for Baltimore County.[4] He defeated his predecessor, Minority Leader F. Vernon Boozer, in the 1998 primary election.[5] A major factor in the race was Boozer's role in derailing an attempt to ban partial-birth abortion a year earlier; the bill's sponsor, fellow state senator Larry Haines, supported Harris's primary bid.[6] In the general election he defeated Democrat challenger Anthony O. Blades.
His district was later redrawn to be District 7, representing Baltimore County and Harford County. He defeated Democratic challenger Diane DeCarlo in the general election in 2002,[7] and from 2003 to 2006 served as the minority whip.[3] In 2006 he won re-election, this time defeating Patricia A. Foerster.[8]
U.S. congressional campaigns
2008
Harris defeated incumbent Republican Wayne Gilchrest and State Senator E.J. Pipkin in the Republican primary for Maryland's 1st congressional district.[9] Harris ran well to the right of Gilchrest, one of the leading moderate Republicans in the House. He explained that he was upset with Gilchrest's decision to support a Democratic bill setting a timetable for troop withdrawal from Iraq and suspected that many of his constituents also felt that way. He was endorsed by the Club for Growth,[10] which raised nearly $250,000 for him,[11] and by former governor Bob Ehrlich,[12] seven of 10 state senators who represent parts of the district, and House Minority Leader Anthony O'Donnell.[13] His general election opponent Frank Kratovil attacked the Club for Growth's policies, and Harris for having its support.[14] Gilchrest endorsed Kratovil for the general election.[15]
The November election was expected to be very close, even though the 1st is considered to be very Republican on paper. This was partly due to the district's geography. Harris is from the Baltimore suburbs, while Kratovil was from the Eastern Shore, which is home to half the district's population. On election night, Kratovil led Harris by 915 votes. After two rounds of counting absentee ballots, Kratovil's lead grew to 2,000 votes. Forecasting that it would be nearly impossible for Harris to close the gap, most media outlets declared Kratovil the winner on the night of November 7.[16][17] Harris finally conceded on November 11. While Harris won the Baltimore suburbs handily, it was not enough to overcome his deficit on the Eastern Shore. John McCain won this district by 19 points, his best showing in the state.
2010
Harris ran again in the 1st District in 2010. He defeated Rob Fisher, a conservative businessman, in the primary.
Harris's primary win set up a rematch against Kratovil. Libertarian Richard James Davis and Independent Jack Wilson also ran. In the November 2 general election, the district reverted to form, and Harris defeated Kratovil by 14 percent.
2012
The National Journal's Cook Political Report named Harris one of the top 10 Republicans most vulnerable to redistricting in 2012, noting that Maryland Democrats could redraw Harris's home in Cockeysville out of the 1st.[18] Instead, Roscoe Bartlett's district was redrawn so as to beat him.[19] Harris was a beneficiary of this remap, as the reconfigured 1st included several heavily Republican portions of Harford and Baltimore counties that had previously been in Bartlett's 6th district.
Harris skated to a second term, defeating Democratic challenger Wendy Rosen with 67 percent of the vote. Rosen had withdrawn from the race after being confronted with information about election-law violations. By the time she pulled out, however, ballots had already been printed. John LaFerla, who had narrowly lost to Rosen in the primary, was endorsed as Rosen's replacement, but could only be a write-in.
2014
Harris defeated Democrat Bill Tilghman in the 2014 congressional elections for Maryland's 1st district.
2016
Harris has not yet announced a 2016 congressional bid. He is widely expected to run for re-election in his seat. He is expected to face opposition in a Republican primary from former Maryland delegate Mike Smigiel.[20]
Controversies
Affordable Care Act
Harris's prominence as a medical doctor in opposition to government-run health care made him a lightning rod for attacks by supporters of the 2010 health care legislation. At a closed-door employee benefits briefing for new congressmen during the November 2010 freshman orientation, Harris was surprised to learn that the Federal employee health benefit plan would leave the new congressmen and their staffers without coverage until the following pay period, 28 days after inauguration. Concerned about this gap in coverage, he asked whether new government employees could purchase temporary coverage to fill this gap. "This is the only employer I've ever worked for where you don't get coverage the first day you are employed," he said through his spokeswoman, Anna Nix.[21][22] Through a spokesman, his defeated opponent, Frank Kratovil, seized upon this dialogue, characterizing the question as a "demand" for special treatment and for access to the benefits he opposed in the new law.[23] Furthermore, "Harris then asked if he could purchase insurance from the government to cover the gap," added an aide, who was struck by the similarity to Harris's request and the public option he denounced as a gateway to socialized medicine.[24]
Debt ceiling
On October 16, 2013, Harris voted against the motion to end the government shutdown and raise the debt ceiling.[25]
DC cannabis reform
In 2014 Harris led the charge to block a recently adopted Washington D.C. cannabis decriminalization bill.[26] His amendment led to a call from D.C. Mayor Vincent Gray to boycott tourism to Rep. Harris's district and the boycott of Maryland's 1st District,[27] as well as an online campaign requesting that D.C. area businesses refuse him service at their establishments.[28] In November 2014, D.C. residents overwhelmingly voted in favor of legalizing recreational cannabis for adults with 68% in favor.[29] Despite this, Harris said he would use "all resources available to a member of Congress to stop this action".[30] On December 9, 2014, congressional leaders announced a deal on a spending bill that included language that will prohibit the D.C. referendum from taking effect. Harris noted that "the Constitution gives Congress the ultimate oversight about what happens in the federal district."[31] Harris believes that cannabis is a gateway drug[32] and has no proven medicinal use.[33] Harris may face a 2016 Republican primary challenge based in part on his opposition to the District's marijuana law.[34]
Shortly after his success in blocking the District's decriminalization legislation, attn.com published an article claiming that Harris' action was tainted by a conflict of interest. According to attn.com, Harris' third largest campaign donor is the pharmaceutical corporation Emergent BioSolutions, based in Rockville, Maryland. One of Emergent's products is epsil, "a fast-acting treatment that reduces the pain associated with oral mucositis," which is a common complication of chemotherapy from cancer treatment. Marijuana has been recognized formally in a number of states as having immense therapeutic potential for cancer patients, and in states where medical marijuana has legalized, the number of pharmaceutical pain killers prescribed has dropped significantly. The congressman has not explicitly addressed this issue.[35]
Committee assignments
In October 2015, Harris was named to serve on the Select Investigative Panel on Planned Parenthood.[36]
Congressional Caucuses
-
Boating
-
Chesapeake Bay Caucus
-
Coal
-
General Aviation
|
-
Hungarian American
-
GOP Doctors
-
Immigration Reform
-
Marcellus Shale
-
Natural Gas
|
-
Northeast Agriculture
-
Republican Israel Caucus
-
Republican Study
-
Sportsmen's
|
Electoral history
Year
|
Office
|
Election
|
|
Subject
|
Party
|
Votes
|
%
|
|
Opponent
|
Party
|
Votes
|
%
|
|
Opponent
|
Party
|
Votes
|
%
|
1998
|
Maryland Senate, District 9[37]
|
General
|
|
Andy Harris
|
Republican
|
24,814
|
61%
|
|
Anthony O. Blades
|
Democratic
|
15,780
|
39%
|
|
|
2002
|
Maryland Senate, District 7[38]
|
General
|
|
Andy Harris
|
Republican
|
23,374
|
57.8%
|
|
Dianne DeCarlo
|
Democratic
|
16,991
|
42.1%
|
|
Write-ins
|
|
44
|
0.1%
|
2006
|
Maryland Senate, District 7[39]
|
General
|
|
Andy Harris
|
Republican
|
23,453
|
56.6%
|
|
Patricia A. Foerster
|
Democratic
|
17,972
|
43.3%
|
|
Write-ins
|
|
35
|
0.1%
|
2008
|
United States House of Representatives, Maryland's 1st congressional district[9]
|
Primary
|
|
Andy Harris
|
Republican
|
33,627
|
43.4%
|
|
Wayne Gilchrest
|
Republican
|
25,624
|
33.1%
|
|
E.J. Pipkin
|
Republican
|
15,700
|
20.3%
|
|
2008
|
United States House of Representatives, Maryland's 1st congressional district[40]
|
General
|
|
Frank Kratovil
|
Democratic
|
177,065
|
49.1%
|
|
Andy Harris
|
Republican
|
174,213
|
48.3%
|
|
Richard James Davis
|
Libertarian
|
8,873
|
2.5%
|
|
Write-ins
|
|
35
|
0.1%
|
2010
|
United States House of Representatives, Maryland's 1st congressional district[40]
|
General
|
|
Andy Harris
|
Republican
|
155,118
|
54.1%
|
|
Frank Kratovil
|
Democratic
|
120,400
|
42.0%
|
|
Richard James Davis
|
Libertarian
|
10,876
|
3.8%
|
|
Write-ins
|
|
418
|
0.15%
|
2012
|
United States House of Representatives, Maryland's 1st congressional district
|
General
|
|
Andy Harris
|
Republican
|
212,204
|
63.4%
|
|
Wendy Rosen
|
Democratic
|
92,812
|
27.5%
|
|
Muir Wayne Boda
|
Libertarian
|
12,857
|
3.8%
|
|
Write-ins
|
|
17,887
|
5.3%
|
2014
|
United States House of Representatives, Maryland's 1st congressional district
|
General
|
|
Andy Harris
|
Republican
|
176,342
|
70.4%
|
|
Bill Tilghman
|
Democratic
|
73,843
|
29.5%
|
|
Write-ins
|
|
233
|
0.1%
|
Personal life
Harris was married for 30 years to Sylvia "Cookie" Harris, who died suddenly on August 28, 2014 after a bout with a prolonged unknown illness.[41] He and Mrs. Harris have five children. Harris resides in Cockeysville, Maryland, and considers himself a "citizen-legislator," maintaining his medical practice while in the State Senate.[3]
Andy Harris has been an active member in the community as a member of the Knights of Columbus,[42] an officer in the Thornleigh Neighborhood Improvement Association (vice-president, 1984–85; president, 1985–86),require('Module:No globals')
local p = {}
-- articles in which traditional Chinese preceeds simplified Chinese local t1st = { ["228 Incident"] = true, ["Chinese calendar"] = true, ["Lippo Centre, Hong Kong"] = true, ["Republic of China"] = true, ["Republic of China at the 1924 Summer Olympics"] = true, ["Taiwan"] = true, ["Taiwan (island)"] = true, ["Taiwan Province"] = true, ["Wei Boyang"] = true, }
-- the labels for each part local labels = { ["c"] = "Chinese", ["s"] = "simplified Chinese", ["t"] = "traditional Chinese", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Cantonese Yale", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Zhuyin Fuhao", ["l"] = "literally", }
-- article titles for wikilinks for each part local wlinks = { ["c"] = "Chinese language", ["s"] = "simplified Chinese characters", ["t"] = "traditional Chinese characters", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Yale romanization of Cantonese", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Bopomofo", }
-- for those parts which are to be treated as languages their ISO code local ISOlang = { ["c"] = "zh", ["t"] = "zh-Hant", ["s"] = "zh-Hans", ["p"] = "zh-Latn-pinyin", ["tp"] = "zh-Latn", ["w"] = "zh-Latn-wadegile", ["j"] = "yue-jyutping", ["cy"] = "yue", ["poj"] = "hak", ["zhu"] = "zh-Bopo", }
local italic = { ["p"] = true, ["tp"] = true, ["w"] = true, ["j"] = true, ["cy"] = true, ["poj"] = true, } -- Categories for different kinds of Chinese text local cats = { ["c"] = "", ["s"] = "", ["t"] = "", }
function p.Zh(frame) -- load arguments module to simplify handling of args local getArgs = require('Module:Arguments').getArgs local args = getArgs(frame) return p._Zh(args) end function p._Zh(args) local uselinks = not (args["links"] == "no") -- whether to add links local uselabels = not (args["labels"] == "no") -- whether to have labels local capfirst = args["scase"] ~= nil
local t1 = false -- whether traditional Chinese characters go first
local j1 = false -- whether Cantonese Romanisations go first
local testChar
if (args["first"]) then
for testChar in mw.ustring.gmatch(args["first"], "%a+") do
if (testChar == "t") then
t1 = true
end
if (testChar == "j") then
j1 = true
end
end
end
if (t1 == false) then
local title = mw.title.getCurrentTitle()
t1 = t1st[title.text] == true
end
-- based on setting/preference specify order local orderlist = {"c", "s", "t", "p", "tp", "w", "j", "cy", "poj", "zhu", "l"} if (t1) then orderlist[2] = "t" orderlist[3] = "s" end if (j1) then orderlist[4] = "j" orderlist[5] = "cy" orderlist[6] = "p" orderlist[7] = "tp" orderlist[8] = "w" end -- rename rules. Rules to change parameters and labels based on other parameters if args["hp"] then -- hp an alias for p ([hanyu] pinyin) args["p"] = args["hp"] end if args["tp"] then -- if also Tongyu pinyin use full name for Hanyu pinyin labels["p"] = "Hanyu Pinyin" end if (args["s"] and args["s"] == args["t"]) then -- Treat simplified + traditional as Chinese if they're the same args["c"] = args["s"] args["s"] = nil args["t"] = nil elseif (not (args["s"] and args["t"])) then -- use short label if only one of simplified and traditional labels["s"] = labels["c"] labels["t"] = labels["c"] end local body = "" -- the output string local params -- for creating HTML spans local label -- the label, i.e. the bit preceeding the supplied text local val -- the supplied text -- go through all possible fields in loop, adding them to the output for i, part in ipairs(orderlist) do if (args[part]) then -- build label label = "" if (uselabels) then label = labels[part] if (capfirst) then label = mw.language.getContentLanguage():ucfirst( a member of the Board of Directors of the Sherwood Community Association, 1987–91,require('Module:No globals')
local p = {}
-- articles in which traditional Chinese preceeds simplified Chinese local t1st = { ["228 Incident"] = true, ["Chinese calendar"] = true, ["Lippo Centre, Hong Kong"] = true, ["Republic of China"] = true, ["Republic of China at the 1924 Summer Olympics"] = true, ["Taiwan"] = true, ["Taiwan (island)"] = true, ["Taiwan Province"] = true, ["Wei Boyang"] = true, }
-- the labels for each part local labels = { ["c"] = "Chinese", ["s"] = "simplified Chinese", ["t"] = "traditional Chinese", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Cantonese Yale", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Zhuyin Fuhao", ["l"] = "literally", }
-- article titles for wikilinks for each part local wlinks = { ["c"] = "Chinese language", ["s"] = "simplified Chinese characters", ["t"] = "traditional Chinese characters", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Yale romanization of Cantonese", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Bopomofo", }
-- for those parts which are to be treated as languages their ISO code local ISOlang = { ["c"] = "zh", ["t"] = "zh-Hant", ["s"] = "zh-Hans", ["p"] = "zh-Latn-pinyin", ["tp"] = "zh-Latn", ["w"] = "zh-Latn-wadegile", ["j"] = "yue-jyutping", ["cy"] = "yue", ["poj"] = "hak", ["zhu"] = "zh-Bopo", }
local italic = { ["p"] = true, ["tp"] = true, ["w"] = true, ["j"] = true, ["cy"] = true, ["poj"] = true, } -- Categories for different kinds of Chinese text local cats = { ["c"] = "", ["s"] = "", ["t"] = "", }
function p.Zh(frame) -- load arguments module to simplify handling of args local getArgs = require('Module:Arguments').getArgs local args = getArgs(frame) return p._Zh(args) end function p._Zh(args) local uselinks = not (args["links"] == "no") -- whether to add links local uselabels = not (args["labels"] == "no") -- whether to have labels local capfirst = args["scase"] ~= nil
local t1 = false -- whether traditional Chinese characters go first
local j1 = false -- whether Cantonese Romanisations go first
local testChar
if (args["first"]) then
for testChar in mw.ustring.gmatch(args["first"], "%a+") do
if (testChar == "t") then
t1 = true
end
if (testChar == "j") then
j1 = true
end
end
end
if (t1 == false) then
local title = mw.title.getCurrentTitle()
t1 = t1st[title.text] == true
end
-- based on setting/preference specify order local orderlist = {"c", "s", "t", "p", "tp", "w", "j", "cy", "poj", "zhu", "l"} if (t1) then orderlist[2] = "t" orderlist[3] = "s" end if (j1) then orderlist[4] = "j" orderlist[5] = "cy" orderlist[6] = "p" orderlist[7] = "tp" orderlist[8] = "w" end -- rename rules. Rules to change parameters and labels based on other parameters if args["hp"] then -- hp an alias for p ([hanyu] pinyin) args["p"] = args["hp"] end if args["tp"] then -- if also Tongyu pinyin use full name for Hanyu pinyin labels["p"] = "Hanyu Pinyin" end if (args["s"] and args["s"] == args["t"]) then -- Treat simplified + traditional as Chinese if they're the same args["c"] = args["s"] args["s"] = nil args["t"] = nil elseif (not (args["s"] and args["t"])) then -- use short label if only one of simplified and traditional labels["s"] = labels["c"] labels["t"] = labels["c"] end local body = "" -- the output string local params -- for creating HTML spans local label -- the label, i.e. the bit preceeding the supplied text local val -- the supplied text -- go through all possible fields in loop, adding them to the output for i, part in ipairs(orderlist) do if (args[part]) then -- build label label = "" if (uselabels) then label = labels[part] if (capfirst) then label = mw.language.getContentLanguage():ucfirst( and served as Vice President of St. Joseph's School Home-School Association from 1992 to 1994.require('Module:No globals')
local p = {}
-- articles in which traditional Chinese preceeds simplified Chinese local t1st = { ["228 Incident"] = true, ["Chinese calendar"] = true, ["Lippo Centre, Hong Kong"] = true, ["Republic of China"] = true, ["Republic of China at the 1924 Summer Olympics"] = true, ["Taiwan"] = true, ["Taiwan (island)"] = true, ["Taiwan Province"] = true, ["Wei Boyang"] = true, }
-- the labels for each part local labels = { ["c"] = "Chinese", ["s"] = "simplified Chinese", ["t"] = "traditional Chinese", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Cantonese Yale", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Zhuyin Fuhao", ["l"] = "literally", }
-- article titles for wikilinks for each part local wlinks = { ["c"] = "Chinese language", ["s"] = "simplified Chinese characters", ["t"] = "traditional Chinese characters", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Yale romanization of Cantonese", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Bopomofo", }
-- for those parts which are to be treated as languages their ISO code local ISOlang = { ["c"] = "zh", ["t"] = "zh-Hant", ["s"] = "zh-Hans", ["p"] = "zh-Latn-pinyin", ["tp"] = "zh-Latn", ["w"] = "zh-Latn-wadegile", ["j"] = "yue-jyutping", ["cy"] = "yue", ["poj"] = "hak", ["zhu"] = "zh-Bopo", }
local italic = { ["p"] = true, ["tp"] = true, ["w"] = true, ["j"] = true, ["cy"] = true, ["poj"] = true, } -- Categories for different kinds of Chinese text local cats = { ["c"] = "", ["s"] = "", ["t"] = "", }
function p.Zh(frame) -- load arguments module to simplify handling of args local getArgs = require('Module:Arguments').getArgs local args = getArgs(frame) return p._Zh(args) end function p._Zh(args) local uselinks = not (args["links"] == "no") -- whether to add links local uselabels = not (args["labels"] == "no") -- whether to have labels local capfirst = args["scase"] ~= nil
local t1 = false -- whether traditional Chinese characters go first
local j1 = false -- whether Cantonese Romanisations go first
local testChar
if (args["first"]) then
for testChar in mw.ustring.gmatch(args["first"], "%a+") do
if (testChar == "t") then
t1 = true
end
if (testChar == "j") then
j1 = true
end
end
end
if (t1 == false) then
local title = mw.title.getCurrentTitle()
t1 = t1st[title.text] == true
end
-- based on setting/preference specify order local orderlist = {"c", "s", "t", "p", "tp", "w", "j", "cy", "poj", "zhu", "l"} if (t1) then orderlist[2] = "t" orderlist[3] = "s" end if (j1) then orderlist[4] = "j" orderlist[5] = "cy" orderlist[6] = "p" orderlist[7] = "tp" orderlist[8] = "w" end -- rename rules. Rules to change parameters and labels based on other parameters if args["hp"] then -- hp an alias for p ([hanyu] pinyin) args["p"] = args["hp"] end if args["tp"] then -- if also Tongyu pinyin use full name for Hanyu pinyin labels["p"] = "Hanyu Pinyin" end if (args["s"] and args["s"] == args["t"]) then -- Treat simplified + traditional as Chinese if they're the same args["c"] = args["s"] args["s"] = nil args["t"] = nil elseif (not (args["s"] and args["t"])) then -- use short label if only one of simplified and traditional labels["s"] = labels["c"] labels["t"] = labels["c"] end local body = "" -- the output string local params -- for creating HTML spans local label -- the label, i.e. the bit preceeding the supplied text local val -- the supplied text -- go through all possible fields in loop, adding them to the output for i, part in ipairs(orderlist) do if (args[part]) then -- build label label = "" if (uselabels) then label = labels[part] if (capfirst) then label = mw.language.getContentLanguage():ucfirst( Also, he has been on the Board of Directors of the Maryland Leadership Council, 1995–98, a member of the North Central Republican Club (treasurer, 1997–98; vice-president, 1998),[3] and finally as a Delegate to the Republican Party National Convention, 2004.[42] Harris has received the Dr. Henry P. and M. Page Laughlin Distinguished Public Officer Award from the Medical and Chirurgical Faculty of Maryland in 2001.[42]
See also
References
-- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --
local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno
local p = {}
-- Helper functions
local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end
local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end
function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end
function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end
function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end
function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end
-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.
function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end
function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end
-- Hatnote -- -- Produces standard hatnote text. Implements the template.
function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end
function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )
end
return p-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --
local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno
local p = {}
-- Helper functions
local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end
local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end
function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end
function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end
function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end
function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end
-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.
function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end
function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end
-- Hatnote -- -- Produces standard hatnote text. Implements the template.
function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end
function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )
end
return p
-
^
-
^
-
^ a b c d e f g Andy Harris for Congress: Biography. Retrieved August 6, 2007.
-
^
-
^
-
^
-
^
-
^
-
^ a b
-
^ Club for Growth Endorses Andy Harris Andy Harris For Congress Press Release. August 13, 2007. Retrieved August 17, 2007.
-
^ OpenSecrets.org. Center for Responsive Politics
-
^ Ehrlich supports Harris for seat ASSOCIATED PRESS October 19, 2007. Retrieved October 19, 2007.
-
^ Eleven Republican Incumbents Have to Watch Their Backs in House Primaries By CQ Staff. October 2, 2007. Retrieved October 19, 2007.
-
^ Anti-tax group’s support not paying dividends Politico
-
^ Gilchrest crosses party lines, endorses Democrat Kratovil, even cutting an ad for him Baltimore Sun
-
^
-
^
-
^
-
^ John Fritze, "Delaney Defeats Bartlett in the 6th District", Baltimore Sun, November 7, 2012.
-
^
-
^
-
^
-
^ Paul West, "Rep.-elect Harris snagged in health care flap," The Baltimore Sun, Nov. 16, 2010.
-
^ Glen Thrush, "GOP frosh: Where's my health care?" Politico, Nov. 15, 2010.
-
^ Washington Post, October 16/17, 2013. "Votes to end the government shutdown".
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^
-
^ Retrieved on Oct 9, 2007
-
^ Retrieved on Oct 9, 2007
-
^ Retrieved on Oct 9, 2007
-
^ a b
-
^
-
^ a b c Maryland Senate Archives Biography. Retrieved August 6, 2007.
External links
|
|
|
|
Majority party
|
|
|
Minority party
|
|
|
|
|
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.