summaryrefslogtreecommitdiff
path: root/lib/tag.rb
diff options
context:
space:
mode:
authorNathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk>2015-01-22 00:20:02 +0000
committerNathan Lasseter <Nathan Lasseter nathan@bytemark.co.uk>2015-01-22 00:20:02 +0000
commitd927f4a0e7c87c6ff50e69f9fbaa4ade827d2f06 (patch)
tree6552fb38e8192e9d35a80e0d706a0e7ec906c4be /lib/tag.rb
parente1d758ddf72d7d8cd29bb0170abcf1397bd67f71 (diff)
Major changes - almost working, just gotta go through tags
Diffstat (limited to 'lib/tag.rb')
-rw-r--r--lib/tag.rb184
1 files changed, 28 insertions, 156 deletions
diff --git a/lib/tag.rb b/lib/tag.rb
index b401acb..0144bb0 100644
--- a/lib/tag.rb
+++ b/lib/tag.rb
@@ -1,34 +1,49 @@
module Virgil
module Tag
class Doctype
- def initialize
- @tag = "<!DOCTYPE " + yield + ">"
+ def initialize(&block)
+ @tag = "<!DOCTYPE " +
+ self.instance_eval(&block) +
+ ">"
end
def to_s
@tag
end
end
class Comment
- def initialize
- @tag = "<!--" + yield + "-->"
+ def initialize(&block)
+ @tag = "<!--" +
+ self.instance_eval(&block) +
+ "-->"
end
def to_s
@tag
end
end
+
class Common
- def initialize(tag, attrs)
- @tag = "<#{tag}" + Utils.unfold(attrs) + ">" +
- yield +
- "</#{tag}>"
+ def initialize(tag, attrs, &block)
+ @tag = "<#{tag}" +
+ Utils.unfold(attrs) +
+ ">" +
+ self.instance_eval(&block) +
+ "</#{tag}>"
end
def to_s
@tag
end
+ def subtag(attrs = {})
+ Common.new(__callee__, attrs, &Proc.new).to_s
+ end
+ def subtagsingle(attrs = {})
+ Common_Single.new(__callee__, attrs).to_s
+ end
end
class Common_Single
def initialize(tag, attrs)
- @tag = "<#{tag}" + Utils.unfold(attrs) + "/>"
+ @tag = "<#{tag}" +
+ Utils.unfold(attrs) +
+ ">"
end
def to_s
@tag
@@ -36,155 +51,12 @@ module Virgil
end
class Map < Common
- def initialize(attrs, &block)
- @tag = "<map" + Utils.unfold(attrs) + ">" +
- self.instance_eval(&block) +
- "</map>"
- end
- def area
- "<area>" +
- "</area>"
- end
+ alias :area :subtagsingle
end
- end
- module Tags
- def doctype
- Tag::Doctype.new(&Proc.new).to_s
+ class Head < Common
+ alias :link :subtagsingle
+ alias :title :subtag
end
- def comment
- Tag::Comment.new(&Proc.new).to_s
- end
- def common(attrs = {})
- Tag::Common.new(__callee__, attrs, &Proc.new).to_s
- end
- def common_single(attrs = {})
- Tag::Common_Single.new(__callee__, attrs).to_s
- end
-
- def map(attrs = {})
- Tag::Map.new(attrs, &Proc.new).to_s
- end
-
- alias :a :common
- alias :abbr :common
- alias :acronym :common
- alias :address :common
- alias :applet :common
- alias :article :common
- alias :aside :common
- alias :audio :common
- alias :b :common
- alias :base :common
- alias :basefont :common
- alias :bdi :common
- alias :bdo :common
- alias :big :common
- alias :blockquote :common
- alias :body :common
- alias :br :common
- alias :button :common
- alias :canvas :common
- alias :caption :common
- alias :center :common
- alias :cite :common
- alias :code :common
- alias :col :common
- alias :colgroup :common
- alias :datalist :common
- alias :dd :common
- alias :del :common
- alias :details :common
- alias :dfn :common
- alias :dialog :common
- alias :dir :common
- alias :div :common
- alias :dl :common
- alias :dt :common
- alias :em :common
- alias :embed :common
- alias :fieldset :common
- alias :figcaption :common
- alias :figure :common
- alias :font :common
- alias :footer :common
- alias :form :common
- alias :frame :common
- alias :frameset :common
- alias :h1 :common
- alias :h2 :common
- alias :h3 :common
- alias :h4 :common
- alias :h5 :common
- alias :h6 :common
- alias :head :common
- alias :header :common
- alias :hgroup :common
- alias :hr :common
- alias :html :common
- alias :i :common
- alias :iframe :common
- alias :img :common_single
- alias :input :common
- alias :ins :common
- alias :kbd :common
- alias :keygen :common
- alias :label :common
- alias :legend :common
- alias :li :common
- alias :link :common
- alias :main :common
- alias :mark :common
- alias :menu :common
- alias :menuitem :common
- alias :meta :common
- alias :meter :common
- alias :nav :common
- alias :noframes :common
- alias :noscript :common
- alias :object :common
- alias :ol :common
- alias :optgroup :common
- alias :option :common
- alias :output :common
- alias :p :common
- alias :param :common
- alias :pre :common
- alias :progress :common
- alias :q :common
- alias :rp :common
- alias :rt :common
- alias :ruby :common
- alias :s :common
- alias :samp :common
- alias :script :common
- alias :section :common
- alias :select :common
- alias :small :common
- alias :source :common
- alias :span :common
- alias :strike :common
- alias :strong :common
- alias :style :common
- alias :sub :common
- alias :summary :common
- alias :sup :common
- alias :table :common
- alias :tbody :common
- alias :td :common
- alias :textarea :common
- alias :tfoot :common
- alias :th :common
- alias :thead :common
- alias :time :common
- alias :title :common
- alias :tr :common
- alias :track :common
- alias :tt :common
- alias :u :common
- alias :ul :common
- alias :var :common
- alias :video :common
- alias :wbr :common
end
end