Open main menu
Home
Random
Donate
Recent changes
Special pages
Community portal
Preferences
About Stockhub
Disclaimers
Search
User menu
Talk
Contributions
Create account
Log in
Editing
Module:Block diagram
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
local p={} function p.main(frame) local args=frame.args or {} local parent=frame.getParent(frame) or {} local pargs=parent.args or {} local textinput=args[1] or pargs[1] or "" local nowiki=args.nowiki or pargs.nowiki or nil local totalwidth=args.width or pargs.width or 220 local totalheight=args.height or pargs.height or 200 local debug=args.debug or pargs.debug local debuglog="" --- Allow searching of all text to end with: textinput=textinput.."<Module:Block diagram internal end token:END>" --- Give all RECOGNIZED markup a consistent searchable string --- more styling should be added; seeking a first proof of concept now local taglist={'left','top','right','bottom','color','background-color','text-align','vertical-align','vcentertext','border-style','border-color','border-width'} for i,v in pairs(taglist) do local vn=mw.ustring.gsub(v,"%-","") --- remove dashes from standard html attribute names to allow internal use local vs=mw.ustring.gsub(v,"%-","%-") -- escape those hyphens for pattern search textinput=mw.ustring.gsub(textinput,"<"..vs.."%s*([^>]*)>","<Module:Block diagram internal "..vn.." token:%1>") debuglog=debuglog..v..vs..vn..textinput end prowl=mw.ustring.gmatch(textinput,"(.-)<Module:Block diagram internal (%S+) token:([^>]*)>") local tableoutput={} local text,tag,value local default={} default['left']=0 default['right']=100 default['top']=0 default['bottom']=100 default['borderstyle']='solid' default['borderwidth']='1px' default['bordercolor']='black' default['color']='black' default['backgroundcolor']='white' -- elements should usually block elements behind them, like grid lines default['textalign']='center' default['verticalalign']='middle' -- pseudo html value, but this needs a special hack to work default['vcentertext']='' for i,j in pairs(default) do _G[i]=j debuglog=debuglog..i..j end repeat text,tag,value = prowl(textinput) debuglog=debuglog..(text or "nil")..(tag or "nil") if not tag then return debuglog end if (text or "")~="" then table.insert(tableoutput,'<div style="position:absolute;top:') table.insert(tableoutput,top) table.insert(tableoutput,'%;bottom:') table.insert(tableoutput,100-bottom) table.insert(tableoutput,'%;left:') table.insert(tableoutput,left) table.insert(tableoutput,'%;right:') table.insert(tableoutput,100-right) table.insert(tableoutput,'%;border-style:') table.insert(tableoutput,borderstyle) table.insert(tableoutput,';border-width:') table.insert(tableoutput,borderwidth) table.insert(tableoutput,';border-color:') table.insert(tableoutput,bordercolor) table.insert(tableoutput,';color:') table.insert(tableoutput,color) table.insert(tableoutput,';background-color:') table.insert(tableoutput,backgroundcolor) table.insert(tableoutput,';">') if textalign~='center' then table.insert(tableoutput,';text-align:'..textalign) end if verticalalign=='top' then table.insert(tableoutput,text) else table.insert(tableoutput,'{{vertical center|1=') table.insert(tableoutput,text) if vcentertext then table.insert(tableoutput,'|3='..vcentertext) end table.insert(tableoutput,'}}') end table.insert(tableoutput,'</div>') end _G[tag]=value or default[tag] until tag=="end" local textoutput=table.concat(tableoutput) textoutput='<div style="position:relative;text-align:center;top:0;left:0;width:'..totalwidth..'px;height:'..totalheight..'px;">'..textoutput..'</div>' if nowiki then textoutput=frame:preprocess("<pre><nowiki>"..textoutput.."</nowiki></pre>") else textoutput=frame:preprocess(textoutput) end if debug then textoutput=textoutput..debuglog end return textoutput end return p
Summary:
Please note that all contributions to Stockhub may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Stockhub:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Templates used on this page:
Template:Vertical center
(
edit
)
Module:Block diagram
(
edit
)
Module:Block diagram/doc
(
edit
)