FANDOM


The Borealian Generation Theory is a theory developed by Borealian sociologist Wilhelm Strauss to explain sociological patterns in generations. Its basic premise is a 40-year pendulum between Awakening and Crisis eras.

Theory MechanicsEdit

The basis of the theory is how history repeats as soon as the previous generation dies out. This period of time, known in ancient Rome as a Saeculum, gives a full cycle of history every 60-80 years or so. With the difference between a younger and older generation of 30-40 years, that gives an alternation between two different generation types every 30-40 years. The first generation type, known as a Hero Generation, is typified by strict practicality focused on the greatness of national pride. The second type, known as a Prophet Generation, looks for moral and philosophical deficiencies in society, and strive to improve the nation internally to help those in need. In times of stress, the Hero Generation calls to arms in a bloody war as a climax, while the Prophet Generation gathers in a mostly bloodless uprising as a climax. 

List of Awakening and Crisis ErasEdit

Spanish Colonial War (Crisis)Edit

At this stage, the Hero Generation were the mosly Hispanic and Bavarian immigrants who went to war as a reaction to the Bavarian invasion from the north (part of the larger conflict known as the War of the Grand Coalition). This climaxed in 1748. The end of the war established the Colony of New Austria, in which the adult Hero Generation (such as Francesco de Ortega) worked to rebuild the society in a thriving agricultural community

Borealian Revolution (Awakening)Edit

At this point, the next generation of mixed Hispanic and Bavarians resulted in a Prophet generation emerging. These Prophets created the philosophy of Borealianism, and saw a moral deficiency primarily in the current governorship, almost leading to civil war. This climaxed in 1785 with the bloodless Borealian Revolution. Queen Mary of Bavaria granted New Austria independence at this point as the Commonwealth of Borealia. This Prophet generation, led by the statesmen Peter Lasuen, went on to establish the moralistic policy of Borealia enshrined in the New Munich Declaration.

Norse-Nehilaw War (Crisis)Edit

As the next generation grew up under the Borealian philosophy, they became enraptured in the idea of protecting the stability of Borealia at any cost, creating a Hero Generation. Thus, when the Nehilaw Sachemate (now known as the Algonquian Sachemate) was unexpectedly invaded by the Nordic Union, the Commonwealth declared total war. This major crisis, albeit external, climaxed with the Norse defeat in 1819. The Hero Generation, led by Abel Sterns, went on to establish Borealian preeminence by conquering California, Alaska, and establishing the Transcontinental Railroad

Romanesque Movement (Awakening)Edit

At this point, a new generation arose that had no experience of the Borealian revolution or the Nordic war, and so became more concerned with internal reform. This was the next Prophet Generation. Growing up with external influence from across the continent, a movement rose up to emulate the freedoms and suffrage of the neighboring Reman Empire. This adhering to the ideals of Rome, with focus on rights for Native Borealians, became known as the Romanesque Movement. After many years of peaceful demonstrations, the movement climaxed in 1863 with the revision of the constitution, changing the Commonwealth of Borealia to the Union of Borealia. This generation went on to reinforce the New Munich declaration by pushing for the liberation of the Nordic and German colonies. 

Winter Wars (Crisis)Edit

After living under the memories of the Norse-Nehilaw war, the next Hero Generation sought to capitalize on their previous victory by going on the offensive against Scandinavia. a series of multiple conflicts arose against the Norse and the Germans, which was worsened by increasing famines during winter times. These Winter Wars finally climaxed in 1902. This Hero Generation went on to establish the overseas territories in Australia and Oceana, as well as bring Borealia into the electronic age. 

Gothic Movement (Awakening)Edit

After seeing the continuous oppression of conquered peoples by the older generation, a new Prophet Generation sought to fix these issues. These poeple saw the wars against the Germans as too harsh against fellow Gothic peoples, and even went so radical as to discount the entire New Munich declaration. Among the smaller movements arising from this trend included the Reformist Church of Latter-Day Saints and the Nivkh Independence Movement. This climaxed in 1938 with the release of all the Borealian territories as independent. This generation went on to establish the United Nations and is still in domination of Borealian politics at this time. 

Application of the theory in other nations (feel free to add)Edit

Roman EmpireEdit

  • c.1340, Palaiologus Civil War
  • 1450-1453, Roman-Ottoman War
  • 1500-1503, Roman-Venetian War
  • c.1560, Franco-Austrian War
  • 1635-1636, Theodore's Revolution
  • 1737-1749, War of the Grand Coalition
  • 1791-1798, War of the Three Brothers
  • 1908-1910, Communist War
  • 1948-1952, World War
  • 1984-Present, the Insurgency

Indian EmpireEdit

  • c.1800, Bengali Civil War
  • c.1880, Unification of India
  • c.1940, World War 2

ChinaEdit

  • c.1810, Reunification of China
  • c.1890, First Sino-Japanese War
  • c.1950, World War 2

JapanEdit

  • c.1760, Tatar-Japanese War
  • c.1840, Fall of the Nihon Theocracy
  • c.1920, Second Sino-Japanese War

Holy Roman Empire / GermanyEdit

  • c.1740, War of the Grand Coalition
  • c.1800, War of Scandinavian Aggression
  • c.1880, Hamburger War
  • c.1950, World War 2

Future ImplicationsEdit

According to this pattern, Strauss predicts a crisis must befall Borealia sometime between 1965 and 1985. Whether this may be internal or external, and the exact outcome of such a conflict is uncertain. 

Continuing allong those lines, the next awakening era must come around the beginning of the 21st century, which is when the Church of Latter-Day Saints predicts the end of the world. 

By this same reasoning, there should be a similar crisis in the Roman Empire (and possibly the rest of the Middle East or Eastern Europe) some time near the end of the 20th century. 

-- -- This module will implement Template loop detected: Template:Navbox --

local p = {}

local HtmlBuilder = require('Module:HtmlBuilder') local navbar = require('Module:Navbar')._navbar local getArgs -- lazily initialized

local args local tableRowAdded = false local border local listnums = {}

local function trim(s)

   return (mw.ustring.gsub(s, "^%s*(.-)%s*$", "%1"))

end

local function addNewline(s)

   if s:match('^[*:;#]') or s:match('^{|') then
       return '\n' .. s ..'\n'
   else
       return s
   end

end

local function addTableRow(tbl)

   -- If any other rows have already been added, then we add a 2px gutter row.
   if tableRowAdded then
       tbl
           .tag('tr')
               .css('height', '2px')
               .tag('td')
               	.attr('colspan',2)
   end

   tableRowAdded = true

   return tbl.tag('tr')

end

local function renderNavBar(titleCell)

   -- Depending on the presence of the navbar and/or show/hide link, we may need to add a spacer div on the left
   -- or right to keep the title centered.
   local spacerSide = nil

   if args.navbar == 'off' then
       -- No navbar, and client wants no spacer, i.e. wants the title to be shifted to the left. If there's
       -- also no show/hide link, then we need a spacer on the right to achieve the left shift.
       if args.state == 'plain' then spacerSide = 'right' end
   elseif args.navbar == 'plain' or (not args.name and mw.getCurrentFrame():getParent():getTitle() == 'Template:Navbox' and (border == 'subgroup' or border == 'child' or border == 'none')) then
       -- No navbar. Need a spacer on the left to balance out the width of the show/hide link.
       if args.state ~= 'plain' then spacerSide = 'left' end
   else
       -- Will render navbar (or error message). If there's no show/hide link, need a spacer on the right
       -- to balance out the width of the navbar.
       if args.state == 'plain' then spacerSide = 'right' end

       titleCell.wikitext(navbar{ 
           args.name, 
           mini = 1, 
           fontstyle = (args.basestyle or ) .. ';' .. (args.titlestyle or ) ..  ';background:none transparent;border:none;'
       })
   end

   -- Render the spacer div.
   if spacerSide then
       titleCell
           .tag('span')
               .css('float', spacerSide)
               .css('width', '6em')
               .wikitext(' ')
   end

end

-- -- Title row -- local function renderTitleRow(tbl)

   if not args.title then return end

   local titleRow = addTableRow(tbl)

   if args.titlegroup then
       titleRow
           .tag('th')
               .attr('scope', 'row')
               .addClass('navbox-group')
               .addClass(args.titlegroupclass)
               .cssText(args.basestyle)
               .cssText(args.groupstyle)
               .cssText(args.titlegroupstyle)
               .wikitext(args.titlegroup)
   end

   local titleCell = titleRow.tag('th').attr('scope', 'col')

   if args.titlegroup then
       titleCell
           .css('border-left', '2px solid #fdfdfd')
           .css('width', '100%')
   end

   local titleColspan = 2
   if args.imageleft then titleColspan = titleColspan + 1 end
   if args.image then titleColspan = titleColspan + 1 end
   if args.titlegroup then titleColspan = titleColspan - 1 end

   titleCell
       .cssText(args.basestyle)
       .cssText(args.titlestyle)
       .addClass('navbox-title')
       .attr('colspan', titleColspan)

   renderNavBar(titleCell)

   titleCell
        .tag('div')
            .addClass(args.titleclass)
            .css('font-size', '110%')
            .wikitext(addNewline(args.title))

end

-- -- Above/Below rows --

local function getAboveBelowColspan()

   local ret = 2
   if args.imageleft then ret = ret + 1 end
   if args.image then ret = ret + 1 end
   return ret

end

local function renderAboveRow(tbl)

   if not args.above then return end

   addTableRow(tbl)
       .tag('td')
           .addClass('navbox-abovebelow')
           .addClass(args.aboveclass)
           .cssText(args.basestyle)
           .cssText(args.abovestyle)
           .attr('colspan', getAboveBelowColspan())
           .tag('div')
               .wikitext(addNewline(args.above))

end

local function renderBelowRow(tbl)

   if not args.below then return end

   addTableRow(tbl)
       .tag('td')
           .addClass('navbox-abovebelow')
           .addClass(args.belowclass)
           .cssText(args.basestyle)
           .cssText(args.belowstyle)
           .attr('colspan', getAboveBelowColspan())
           .tag('div')
               .wikitext(addNewline(args.below))

end

-- -- List rows -- local function renderListRow(tbl, listnum)

   local row = addTableRow(tbl)

   if listnum == 1 and args.imageleft then
       row
           .tag('td')
               .addClass('navbox-image')
               .addClass(args.imageclass)
               .css('width', '0%')
               .css('padding', '0px 2px 0px 0px')
               .cssText(args.imageleftstyle)
               .attr('rowspan', 2 * #listnums - 1)
               .tag('div')
                   .wikitext(addNewline(args.imageleft))
   end

   if args['group' .. listnum] then
       local groupCell = row.tag('th')

       groupCell
              .attr('scope', 'row')
              .addClass('navbox-group')
              .addClass(args.groupclass)
              .cssText(args.basestyle)

       if args.groupwidth then
           groupCell.css('width', args.groupwidth)
       end

       groupCell
           .cssText(args.groupstyle)
           .cssText(args['group' .. listnum .. 'style'])
           .wikitext(args['group' .. listnum])
   end

   local listCell = row.tag('td')

   if args['group' .. listnum] then
       listCell
           .css('text-align', 'left')
           .css('border-left-width', '2px')
           .css('border-left-style', 'solid')
   else
       listCell.attr('colspan', 2)
   end

   if not args.groupwidth then 
       listCell.css('width', '100%')
   end

   local isOdd = (listnum % 2) == 1
   local rowstyle = args.evenstyle
   if isOdd then rowstyle = args.oddstyle end

   local evenOdd
   if args.evenodd == 'swap' then
       if isOdd then evenOdd = 'even' else evenOdd = 'odd' end
   else
       if isOdd then evenOdd = args.evenodd or 'odd' else evenOdd = args.evenodd or 'even' end
   end

   listCell
       .css('padding', '0px')
       .cssText(args.liststyle)
       .cssText(rowstyle)
       .cssText(args['list' .. listnum .. 'style'])
       .addClass('navbox-list')
       .addClass('navbox-' .. evenOdd)
       .addClass(args.listclass)
       .tag('div')
           .css('padding', (listnum == 1 and args.list1padding) or args.listpadding or '0em 0.25em')
           .wikitext(addNewline(args['list' .. listnum]))

   if listnum == 1 and args.image then
       row
           .tag('td')
               .addClass('navbox-image')
               .addClass(args.imageclass)
               .css('width', '0%')
               .css('padding', '0px 0px 0px 2px')
               .cssText(args.imagestyle)
               .attr('rowspan', 2 * #listnums - 1)
               .tag('div')
                   .wikitext(addNewline(args.image))
   end

end


-- -- Tracking categories --

local function needsHorizontalLists()

   if border == 'child' or border == 'subgroup'  or args.tracking == 'no' then return false end

   local listClasses = {'plainlist', 'hlist', 'hlist hnum', 'hlist hwrap', 'hlist vcard', 'vcard hlist', 'hlist vevent'}
   for i, cls in ipairs(listClasses) do
       if args.listclass == cls or args.bodyclass == cls then
           return false
       end
   end

   return true

end

local function hasBackgroundColors()

   return mw.ustring.match(args.titlestyle or ,'background') or mw.ustring.match(args.groupstyle or ,'background') or mw.ustring.match(args.basestyle or ,'background')

end

local function getTrackingCategories()

   local cats = {}
   if needsHorizontalLists() then table.insert(cats, 'Navigational boxes without horizontal lists') end
   if hasBackgroundColors() then table.insert(cats, 'Navboxes using background colours') end
   return cats

end

local function renderTrackingCategories(builder)

   local title = mw.title.getCurrentTitle()
   if title.namespace ~= 10 then return end -- not in template space
   local subpage = title.subpageText
   if subpage == 'doc' or subpage == 'sandbox' or subpage == 'testcases' then return end

   for i, cat in ipairs(getTrackingCategories()) do
       builder.wikitext() 
   end

end

-- -- Main navbox tables -- local function renderMainTable()

   local tbl = HtmlBuilder.create('table')
       .attr('cellspacing', 0)
       .addClass('nowraplinks')
       .addClass(args.bodyclass)

   if args.title and (args.state ~= 'plain' and args.state ~= 'off') then
       tbl
           .addClass('collapsible')
           .addClass(args.state or 'autocollapse')
   end

   tbl.css('border-spacing', 0)
   if border == 'subgroup' or border == 'child' or border == 'none' then
       tbl
           .addClass('navbox-subgroup')
           .cssText(args.bodystyle)
           .cssText(args.style)
   else -- regular navobx - bodystyle and style will be applied to the wrapper table
       tbl
           .addClass('navbox-inner')
           .css('background', 'transparent')
           .css('color', 'inherit')
   end
   tbl.cssText(args.innerstyle)

   renderTitleRow(tbl)
   renderAboveRow(tbl)
   for i, listnum in ipairs(listnums) do
       renderListRow(tbl, listnum) 
   end
   renderBelowRow(tbl)

   return tbl

end

function p._navbox(navboxArgs)

   args = navboxArgs

   for k, v in pairs(args) do
       local listnum = ( .. k):match('^list(%d+)$')
       if listnum then table.insert(listnums, tonumber(listnum)) end
   end
   table.sort(listnums)

   border = trim(args.border or args[1] or )

   -- render the main body of the navbox
   local tbl = renderMainTable()

   -- render the appropriate wrapper around the navbox, depending on the border param
   local res = HtmlBuilder.create()
   if border == 'none' then
       res.node(tbl)
   elseif border == 'subgroup' or border == 'child' then
       -- We assume that this navbox is being rendered in a list cell of a parent navbox, and is
       -- therefore inside a div with padding:0em 0.25em. We start with a </div> to avoid the
-- padding being applied, and at the end add a
to balance out the parent's
       res
           .tag('/div', {unclosed = true})
               .done()
           .node(tbl)
           .tag('div', {unclosed = true})
   else
       res
           .tag('table')
               .attr('cellspacing', 0)
               .addClass('navbox')
               .css('border-spacing', 0)
               .cssText(args.bodystyle)
               .cssText(args.style)
               .tag('tr')
                   .tag('td')
                       .css('padding', '2px')
                       .node(tbl)
   end

   renderTrackingCategories(res)

   return tostring(res)

end

function p.navbox(frame)

   if not getArgs then
   	getArgs = require('Module:Arguments').getArgs
   end
   args = getArgs(frame)

   -- Read the arguments in the order they'll be output in, to make references number in the right order.
   local _
   _ = args.title
   _ = args.above
   for i = 1, 20 do
       _ = args["group" .. tostring(i)]
       _ = args["list" .. tostring(i)]
   end    
   _ = args.below

   return p._navbox(args)

end

return p

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.