hoshi 0.2.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 221a93d1028f8a61613f742d6d260f5678e83b1f
4
+ data.tar.gz: 10addb7f304cb7fc5f533e77b48fae2442df608a
5
+ SHA512:
6
+ metadata.gz: a3e4b240018e7bc059f8eaa810c0c280587df6336645c44a5911d6a8b5fb9f41c44db2f934beb1eb5ec80c8f4375088d436f064b6b54d8bd10a6a4fde3422552
7
+ data.tar.gz: dc0fb5a542d44f605f9133668c092ef1d03a745c76ef0bd2ed3ccd9528edc53477e4d251a67cd238c62d52fa5654a5b5bed7ed3afe07855821114f077b4b58ad
data/Rakefile CHANGED
@@ -1,12 +1,11 @@
1
- require 'rake/gempackagetask'
2
- require 'rake/rdoctask'
3
-
1
+ require 'rubygems/package_task'
2
+ require 'rdoc/task'
4
3
 
5
4
  spec = Gem::Specification.new { |s|
6
5
  s.platform = Gem::Platform::RUBY
7
6
 
8
7
  s.author = "Pete Elmore"
9
- s.email = "pete.elmore@gmail.com"
8
+ s.email = "pete@debu.gs"
10
9
  s.files = Dir["{lib,doc,bin,ext}/**/*"].delete_if {|f|
11
10
  /\/rdoc(\/|$)/i.match f
12
11
  } + %w(Rakefile)
@@ -21,10 +20,10 @@ spec = Gem::Specification.new { |s|
21
20
  s.summary = "Nice, object-oriented, first-class views."
22
21
  s.homepage = "http://debu.gs/#{s.name}"
23
22
  %w(metaid hpricot).each &s.method(:add_dependency)
24
- s.version = '0.2.1'
23
+ s.version = '1.0.0'
25
24
  }
26
25
 
27
- Rake::GemPackageTask.new(spec) { |pkg|
26
+ Gem::PackageTask.new(spec) { |pkg|
28
27
  pkg.need_tar_bz2 = true
29
28
  }
30
29
 
@@ -32,3 +31,7 @@ task(:install => :package) {
32
31
  g = "pkg/#{spec.name}-#{spec.version}.gem"
33
32
  system "sudo gem install -l #{g}"
34
33
  }
34
+
35
+ task(:test) {
36
+ system "ruby test/run.rb"
37
+ }
data/doc/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008 Peter Elmore (pete.elmore at gmail.com)
1
+ Copyright (c) 2008,2013 Peter Elmore (pete at debu.gs)
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a
4
4
  copy of this software and associated documentation files (the "Software"),
data/doc/examples/env.cgi CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  # Perl, eat your heart out.
4
4
 
5
- require 'rubygems'
6
5
  require 'hoshi'
7
6
 
8
7
  qstring = ENV.delete 'QUERY_STRING'
@@ -1,7 +1,7 @@
1
1
  require 'hoshi/view/html4'
2
2
 
3
3
  class Hoshi::View
4
- class HTML4Transitional < HTML
4
+ class HTML4Transitional < HTML4
5
5
  dtd! "<DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 " \
6
6
  "Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">"
7
7
  end
@@ -0,0 +1,23 @@
1
+ require 'hoshi/view/html'
2
+
3
+ class Hoshi::View
4
+ class HTML5 < HTML
5
+ dtd! "<!DOCTYPE html>"
6
+
7
+ tags *%w(
8
+ a abbr address area article aside audio b base bb bdi
9
+ bdo blockquote body button canvas caption cite code col
10
+ colgroup command data datagrid datalist dd del details
11
+ dfn div dl dt em embed eventsource fieldset figcaption
12
+ figure footer form h1 h2 h3 h4 h5 h6 head header hgroup
13
+ hr html i iframe img input ins kbd keygen label legend
14
+ li link mark map menu meta meter nav noscript object ol
15
+ optgroup option output p param pre progress q ruby rp rt
16
+ s samp script section select small source span strong
17
+ style sub summary sup table tbody td textarea tfoot th
18
+ thead time title tr track u ul var video wbr
19
+ )
20
+ open_tags *%w(br)
21
+ end
22
+ end
23
+
@@ -2,8 +2,7 @@ require 'hoshi/view/xhtml'
2
2
 
3
3
  class Hoshi::View
4
4
  class XHTML1 < XHTML
5
- dtd! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 " \
6
- "Strict//EN\" " \
5
+ dtd! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" " \
7
6
  "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">"
8
7
  tags *%w(a abbr acronym address applet area b base basefont bdo big
9
8
  blockquote body br button caption center cite code col
@@ -2,8 +2,8 @@ require 'hoshi/view/xhtml1'
2
2
 
3
3
  class Hoshi::View
4
4
  class XHTML1Frameset < XHTML1
5
- dtd! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 " \
6
- "Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">"
5
+ dtd! "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" " \
6
+ "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">"
7
7
  tags *%w(a abbr acronym address applet area b base basefont bdo big
8
8
  blockquote body br button caption center cite code col
9
9
  colgroup dd del dfn dir div dl dt em fieldset font form frame
data/lib/hoshi/view.rb CHANGED
@@ -32,6 +32,10 @@ module Hoshi
32
32
  names.map { |n| tag n, :none }
33
33
  end
34
34
 
35
+ def self.self_closing_tags *names
36
+ names.map { |n| tag n, :self }
37
+ end
38
+
35
39
  # This method choses, based on the provided doctype, the proper
36
40
  # sub-class of View. Generally, you'll be using this rather than
37
41
  # sub-classing View directly. The doctype argument is case- and
metadata CHANGED
@@ -1,107 +1,103 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: hoshi
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Pete Elmore
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2009-05-13 00:00:00 -07:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
11
+ date: 2013-09-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
16
14
  name: metaid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
17
20
  type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
26
28
  name: hpricot
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
27
34
  type: :runtime
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: "0"
34
- version:
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
35
41
  description:
36
- email: pete.elmore@gmail.com
37
- executables:
42
+ email: pete@debu.gs
43
+ executables:
38
44
  - html2hoshi
39
45
  extensions: []
40
-
41
- extra_rdoc_files:
46
+ extra_rdoc_files:
42
47
  - doc/LICENSE
43
48
  - doc/TODO
44
- - doc/README
45
- files:
46
- - lib/hoshi
47
- - lib/hoshi/view
48
- - lib/hoshi/view/xhtml2.rb
49
- - lib/hoshi/view/html4_transitional.rb
50
- - lib/hoshi/view/html4_frameset.rb
49
+ files:
50
+ - lib/html2hoshi.rb
51
+ - lib/hoshi/view.rb
52
+ - lib/hoshi/tag.rb
53
+ - lib/hoshi/view-tag-fallback.rb
51
54
  - lib/hoshi/view/xhtml1.rb
52
- - lib/hoshi/view/html3.rb
53
- - lib/hoshi/view/xhtml1_frameset.rb
54
- - lib/hoshi/view/html4.rb
55
- - lib/hoshi/view/rss2.rb
56
55
  - lib/hoshi/view/html.rb
57
- - lib/hoshi/view/xhtml.rb
56
+ - lib/hoshi/view/html4.rb
57
+ - lib/hoshi/view/html4_frameset.rb
58
+ - lib/hoshi/view/xhtml1_frameset.rb
59
+ - lib/hoshi/view/html5.rb
58
60
  - lib/hoshi/view/xhtml1_strict.rb
61
+ - lib/hoshi/view/xhtml.rb
62
+ - lib/hoshi/view/html4_transitional.rb
63
+ - lib/hoshi/view/xhtml2.rb
64
+ - lib/hoshi/view/html3.rb
65
+ - lib/hoshi/view/rss2.rb
59
66
  - lib/hoshi/view/xhtml1_transitional.rb
60
- - lib/hoshi/view-tag-fallback.rb
61
- - lib/hoshi/monkey_patches.rb
62
- - lib/hoshi/view.rb
63
- - lib/hoshi/tag.rb
64
67
  - lib/hoshi/view-tag.rb
68
+ - lib/hoshi/monkey_patches.rb
65
69
  - lib/hoshi.rb
66
- - lib/html2hoshi.rb
67
- - doc/LICENSE
68
- - doc/TODO
69
- - doc/examples
70
- - doc/examples/trivial.rb
70
+ - doc/examples/layouts.rb
71
+ - doc/examples/inline_tags.rb
71
72
  - doc/examples/blocks.rb
72
73
  - doc/examples/env.cgi
73
- - doc/examples/inline_tags.rb
74
- - doc/examples/feed.rb
74
+ - doc/examples/trivial.rb
75
75
  - doc/examples/rss2.rb
76
- - doc/examples/layouts.rb
77
- - doc/README
76
+ - doc/LICENSE
77
+ - doc/TODO
78
78
  - bin/html2hoshi
79
79
  - Rakefile
80
- has_rdoc: true
81
80
  homepage: http://debu.gs/hoshi
81
+ licenses: []
82
+ metadata: {}
82
83
  post_install_message:
83
84
  rdoc_options: []
84
-
85
- require_paths:
85
+ require_paths:
86
86
  - lib
87
- required_ruby_version: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- version: "0"
92
- version:
93
- required_rubygems_version: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: "0"
98
- version:
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
99
97
  requirements: []
100
-
101
98
  rubyforge_project: hoshi-view
102
- rubygems_version: 1.3.1
99
+ rubygems_version: 2.0.3
103
100
  signing_key:
104
- specification_version: 2
101
+ specification_version: 4
105
102
  summary: Nice, object-oriented, first-class views.
106
103
  test_files: []
107
-
data/doc/README DELETED
@@ -1,180 +0,0 @@
1
- = Hoshi
2
-
3
- == Summary
4
-
5
- Hoshi is a library for creating real first-class HTML/XML views. So,
6
- unlike template libraries, you can take advantage of mixins,
7
- inheritance, and all the other wonderful features of Ruby's object
8
- system. There is also support for easy RSS feeds and CGI.
9
-
10
- Hoshi is designed to:
11
- * Generate clean HTML/XHTML/XML with minimal effort
12
- * Be easy for a coder to use and understand
13
- * Take full advantage of Ruby's object sytem
14
- * Be more readable and easier to write than bare HTML
15
-
16
- It is semi-modeled after Markaby, but with a much more straightforward
17
- implementation and different semantics (e.g., no instance_eval, so scope
18
- inside a tag is as expected). Hoshi also allows a tag to follow another
19
- tag without requiring any <<, +, or +=.
20
-
21
- == Installation
22
-
23
- You can install via rubygems,
24
-
25
- gem install hoshi
26
-
27
- or by downloading from github (http://github.com/pete/hoshi).
28
-
29
- == Usage
30
-
31
- These examples and more featured in the fabulous doc/examples directory.
32
- Also, there is a program included called html2hoshi (and associated
33
- lib/html2hoshi.rb; see Hoshi.from_html) that takes HTML as input and
34
- converts it to Ruby code using Hoshi.
35
-
36
- === Class-based
37
-
38
- These should be fairly straightforward:
39
-
40
- require 'hoshi'
41
-
42
- class Trivial < Hoshi::View :html4
43
- def show
44
- doctype
45
- html {
46
- head {
47
- title "Hello, world!"
48
- link :rel => 'stylesheet', :href => '/css/hoshi.css'
49
- }
50
-
51
- body {
52
- h1 "Hello, world!"
53
- p "This is a greeting to the world."
54
- }
55
- }
56
- render
57
- end
58
- end
59
-
60
- puts Trivial.new.show
61
-
62
- You can get a little more complicated:
63
-
64
- require 'hoshi'
65
- require 'cgi'
66
-
67
- module Layout
68
- def main_page(t)
69
- doctype
70
- html {
71
- head {
72
- title t
73
- script(:type => 'text/javascript') {
74
- raw "alert(\"Hi, I'm some javascript, I suppose.\");"
75
- }
76
- }
77
-
78
- body {
79
- h1 t, :class => 'page_title'
80
-
81
- yield
82
- }
83
- }
84
- end
85
-
86
- def list_page(t)
87
- main_page(t) {
88
- ul {
89
- yield
90
- }
91
- }
92
- end
93
- end
94
-
95
-
96
- class Fibonacci < Hoshi::View :xhtml1
97
- include Layout
98
-
99
- def list_page(n)
100
- super("Fibonacci: f(0)..f(#{n})") {
101
- fib_upto(n).map { |i| li i.to_s }
102
- }
103
- CGI.pretty(render)
104
- end
105
-
106
- private
107
-
108
- def fib_upto n
109
- a = Array.new(n)
110
-
111
- 0.upto(n) { |i|
112
- a[i] =
113
- if i < 2
114
- 1
115
- else
116
- a[i - 1] + a[i - 2]
117
- end
118
- }
119
-
120
- a
121
- end
122
- end
123
-
124
- puts Fibonacci.new.list_page(n)
125
-
126
- === Block-based
127
-
128
- For simpler cases where you only intend to produce markup, perhaps for use as a templating engine.
129
-
130
- require 'hoshi'
131
-
132
- str = Hoshi::View::HTML4.build {
133
- doctype
134
- html {
135
- head {
136
- title "Hello, world!"
137
- link :rel => 'stylesheet', :href => '/css/hoshi.css'
138
- }
139
-
140
- body {
141
- h1 "Hello, world!"
142
- p "This is a greeting to the world."
143
- }
144
- }
145
- }
146
-
147
- puts str
148
-
149
- == Bugs
150
-
151
- There needs to be some work done on correcting the tags.
152
-
153
- == Credits
154
-
155
- Author:
156
- Pete Elmore -- (pete.elmore(a)gmail.com)
157
-
158
- Initial Design:
159
- Dan Yoder -- (danyoder(a)mac.com)
160
-
161
- Simple block version:
162
- Nolan Darilek -- (nolan(a)thewordnerd.info)
163
-
164
- Homie that be lookin' out for my broken deps:
165
- Lars Lethonen
166
-
167
- The guys that paid me to do this:
168
- AT&T Interactive. (By the way, email me if you want to come work here.)
169
-
170
- Also, I guess I should credit Attractive Eighties Women
171
- (http://attractiveeightieswomen.com/), since I was blasting them the
172
- whole time I was developing this. Like, over and over. I couldn't stop
173
- listening. My friends and family are becoming concerned. I don't feel
174
- that I am yet ready to take the first step by admitting there is a
175
- problem. Intervention may be required. This paragraph should probably
176
- be considered a cry for help.
177
-
178
- == Home page
179
-
180
- http://debu.gs/hoshi
data/doc/examples/feed.rb DELETED
@@ -1,40 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- require 'hoshi'
5
-
6
- class Feed < Hoshi::View :html
7
- permissive!
8
- def show
9
- raw "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
10
- raw "<?xml-stylesheet href=\"http://feeds.feedburner.com/~d/styles/rss2full.xsl\" type=\"text/xsl\" media=\"screen\"?>"
11
- raw "<?xml-stylesheet href=\"http://feeds.feedburner.com/~d/styles/itemcontent.css\" type=\"text/css\" media=\"screen\"?>"
12
- rss("xmlns:wfw"=>"http://wellformedweb.org/CommentAPI/", "xmlns:atom"=>"http://www.w3.org/2005/Atom", "version"=>"2.0", "xmlns:content"=>"http://purl.org/rss/1.0/modules/content/", "xmlns:dc"=>"http://purl.org/dc/elements/1.1/") {
13
- channel {
14
- title "Debugs"
15
- link "http://debu.gs/blog/debugs.rss"
16
- description
17
- language "en"
18
- tag "atom10:link", nil, "href"=>"http://feeds.feedburner.com/debugs", "rel"=>"self", "xmlns:atom10"=>"http://www.w3.org/2005/Atom", "type"=>"application/rss+xml"
19
- item {
20
- title "Hoshi 0.1.0 Released...Soon"
21
- link "http://debu.gs/hoshi-010-released"
22
- pubDate "Thu, 06 Nov 2008 00:00:00 +0000"
23
- description "Bringing first-class views to Ruby."
24
- }
25
- item {
26
- title "LiveConsole 0.2.0 Released"
27
- link "http://debu.gs/liveconsole-020-released"
28
- pubDate "Thu, 16 Oct 2008 00:00:00 +0000"
29
- description "LiveConsole 0.2.0 released with support for Unix Domain Sockets and arbitrary bindings."
30
- }
31
- }
32
- }
33
- render
34
- end
35
- end
36
-
37
- if __FILE__ == $0
38
- require 'cgi'
39
- puts CGI.pretty(Feed.new.show)
40
- end