hoshi 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -20,8 +20,8 @@ spec = Gem::Specification.new { |s|
20
20
  s.rubyforge_project = 'hoshi-view'
21
21
  s.summary = "Nice, object-oriented, first-class views."
22
22
  s.homepage = "http://debu.gs/#{s.name}"
23
- %w(facets metaid hpricot).each &s.method(:add_dependency)
24
- s.version = '0.1.3'
23
+ %w(metaid hpricot).each &s.method(:add_dependency)
24
+ s.version = '0.1.4'
25
25
  }
26
26
 
27
27
  Rake::GemPackageTask.new(spec) { |pkg|
@@ -29,6 +29,6 @@ Rake::GemPackageTask.new(spec) { |pkg|
29
29
  }
30
30
 
31
31
  task(:install => :package) {
32
- g = Dir['pkg/*.gem'].sort.last
33
- system "gem install -l #{g}"
32
+ g = "pkg/#{spec.name}-#{spec.version}.gem"
33
+ system "sudo gem install -l #{g}"
34
34
  }
data/doc/TODO CHANGED
@@ -1,6 +1,7 @@
1
1
  TODO for 1.0:
2
2
  * Separate the tags by close type in the various View sub-classes. (The most
3
3
  tedious thing on the list, but required for compliance.)
4
+ * Still not too happy about the way RSS feeds are done, going to rework.
4
5
 
5
6
  TODO for later:
6
7
  * Have html2hoshi do a smarter job of deciding doctypes, not using permissive!
@@ -1,4 +1,3 @@
1
-
2
1
  require 'hoshi'
3
2
  require 'cgi'
4
3
 
@@ -6,3 +6,13 @@ class Hash
6
6
  map { |k,v| "#{k}=#{qchar}#{v}#{qchar}" }.join(' ')
7
7
  end
8
8
  end
9
+
10
+ # We've dropped facets, and are now shooting for compatibility across Ruby
11
+ # versions, so we add Symbol#to_proc unless it exists.
12
+ unless((Symbol.instance_method(:to_proc) rescue nil))
13
+ class Symbol
14
+ def to_proc
15
+ proc { |obj, *args| obj.send(self, *args) }
16
+ end
17
+ end
18
+ end
@@ -12,5 +12,12 @@ class Hoshi::View
12
12
  def cdata str
13
13
  append! "<![CDATA[\n" + str + "\n]]>"
14
14
  end
15
+
16
+ # Includes the stylesheets from the list passed as arguments.
17
+ def css_includes *ss
18
+ ss.each { |s|
19
+ link :rel => 'stylesheet', :media => 'all', :href => s
20
+ }
21
+ end
15
22
  end
16
23
  end
@@ -22,7 +22,7 @@ class Hoshi::View
22
22
  self.channel_block = b
23
23
  end
24
24
 
25
- def def_item &b
25
+ def each_item &b
26
26
  self.item_block = b
27
27
  end
28
28
 
@@ -0,0 +1,19 @@
1
+ module Hoshi
2
+ class View
3
+ # This method is a fallback for pre-1.8.7 Ruby; if a syntax error is
4
+ # encountered when hoshi/view.rb tries to load hoshi/view-tag.rb, this
5
+ # file is loaded. I have really been trying to avoid eval()ing strings
6
+ # (for religious reasons), but have to make this concession.
7
+ def self.tag(name, close_type = nil)
8
+ class_eval <<-EOHACK
9
+ def #{name}(*opts, &b)
10
+ if b
11
+ tag #{name.inspect}, #{close_type.inspect}, *opts, &b
12
+ else
13
+ tag #{name.inspect}, #{close_type.inspect}, *opts, &b
14
+ end
15
+ end
16
+ EOHACK
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ module Hoshi
2
+ class View
3
+ # This creates an instance method for this view which appends a tag.
4
+ # Most of these are handled for you. The arguments to this method
5
+ # match those to Tag.new. See also View#permissive!.
6
+ # tag('h1')
7
+ # def show_an_h1
8
+ # h1 "I have been shown"
9
+ # end
10
+ def self.tag(name, close_type = nil)
11
+ define_method(name) { |*opts,&b|
12
+ if b
13
+ tag name, close_type, *opts, &b
14
+ else
15
+ tag name, close_type, *opts
16
+ end
17
+ }
18
+ end
19
+ end
20
+ end
data/lib/hoshi/view.rb CHANGED
@@ -1,6 +1,12 @@
1
1
  require 'metaid'
2
2
  require 'cgi'
3
3
 
4
+ begin
5
+ require 'hoshi/view-tag'
6
+ rescue SyntaxError
7
+ require 'hoshi/view-tag-fallback'
8
+ end
9
+
4
10
  module Hoshi
5
11
  # The View class is the super-class for views you create with Hoshi. More
6
12
  # likely, though, you'll be using one of View's many sub-classes as the
@@ -15,23 +21,6 @@ module Hoshi
15
21
  class View
16
22
  class ValidationError < StandardError; end
17
23
 
18
- # This creates an instance method for this view which appends a tag.
19
- # Most of these are handled for you. The arguments to this method
20
- # match those to Tag.new. See also View#permissive!.
21
- # tag('h1')
22
- # def show_an_h1
23
- # h1 "I have been shown"
24
- # end
25
- def self.tag(name, close_type = nil)
26
- define_method(name) { |*opts,&b|
27
- if b
28
- tag name, close_type, *opts, &b
29
- else
30
- tag name, close_type, *opts
31
- end
32
- }
33
- end
34
-
35
24
  # A short-hand for creating multiple tags via View.tag. For tags that
36
25
  # do not require closing, see View.open_tags.
37
26
  def self.tags *names
@@ -52,7 +41,8 @@ module Hoshi
52
41
  doctype = doctype.to_s.downcase.gsub('_', '')
53
42
  const_get(constants.find { |c|
54
43
  cl = const_get c
55
- cl.ancestors.include?(self) && c.downcase == doctype
44
+ (cl.ancestors.include?(self) &&
45
+ c.to_s.downcase == doctype) rescue false
56
46
  }) rescue nil
57
47
  end
58
48
 
data/lib/hoshi.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'facets/symbol'
2
1
  require 'hoshi/monkey_patches'
3
2
 
4
3
  require 'hoshi/tag'
metadata CHANGED
@@ -1,63 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
- name: hoshi
3
- version: !ruby/object:Gem::Version
4
- version: 0.1.3
5
- platform: ruby
6
- authors:
7
- - Pete Elmore
8
- autorequire:
9
- bindir: bin
10
- cert_chain: []
11
-
12
- date: 2008-11-11 00:00:00 -08:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: facets
17
- 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
26
- name: metaid
27
- 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
- - !ruby/object:Gem::Dependency
36
- name: hpricot
37
- type: :runtime
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: "0"
44
- version:
45
- description:
2
+ required_ruby_version: !ruby/object:Gem::Requirement
3
+ requirements:
4
+ - - '>='
5
+ - !ruby/object:Gem::Version
6
+ version: "0"
7
+ version:
46
8
  email: pete.elmore@gmail.com
47
- executables:
48
- - html2hoshi
49
- extensions: []
9
+ cert_chain: []
50
10
 
11
+ summary: Nice, object-oriented, first-class views.
12
+ post_install_message:
51
13
  extra_rdoc_files:
52
14
  - doc/README
53
15
  - doc/TODO
54
16
  - doc/LICENSE
17
+ homepage: http://debu.gs/hoshi
18
+ signing_key:
19
+ name: hoshi
20
+ rdoc_options: []
21
+
22
+ autorequire:
23
+ rubyforge_project: hoshi-view
24
+ executables:
25
+ - html2hoshi
26
+ description:
27
+ specification_version: 2
28
+ default_executable:
55
29
  files:
56
30
  - lib/html2hoshi.rb
57
31
  - lib/hoshi.rb
58
32
  - lib/hoshi
59
33
  - lib/hoshi/monkey_patches.rb
60
34
  - lib/hoshi/view
35
+ - lib/hoshi/view-tag.rb
36
+ - lib/hoshi/tag.rb
37
+ - lib/hoshi/view-tag-fallback.rb
38
+ - lib/hoshi/view.rb
61
39
  - lib/hoshi/view/html.rb
62
40
  - lib/hoshi/view/xhtml1_strict.rb
63
41
  - lib/hoshi/view/xhtml1_frameset.rb
@@ -70,45 +48,59 @@ files:
70
48
  - lib/hoshi/view/xhtml2.rb
71
49
  - lib/hoshi/view/xhtml1_transitional.rb
72
50
  - lib/hoshi/view/rss2.rb
73
- - lib/hoshi/tag.rb
74
- - lib/hoshi/view.rb
75
51
  - doc/README
76
52
  - doc/examples
53
+ - doc/TODO
54
+ - doc/LICENSE
77
55
  - doc/examples/layouts.rb
78
56
  - doc/examples/trivial.rb
79
57
  - doc/examples/blocks.rb
80
58
  - doc/examples/env.cgi
81
59
  - doc/examples/feed.rb
82
60
  - doc/examples/rss2.rb
83
- - doc/TODO
84
- - doc/LICENSE
85
61
  - bin/html2hoshi
86
62
  - Rakefile
87
- has_rdoc: true
88
- homepage: http://debu.gs/hoshi
89
- post_install_message:
90
- rdoc_options: []
91
-
92
- require_paths:
93
- - lib
94
- required_ruby_version: !ruby/object:Gem::Requirement
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- version: "0"
99
- version:
100
63
  required_rubygems_version: !ruby/object:Gem::Requirement
101
64
  requirements:
102
- - - ">="
65
+ - - '>='
103
66
  - !ruby/object:Gem::Version
104
67
  version: "0"
105
68
  version:
106
- requirements: []
69
+ extensions: []
107
70
 
108
- rubyforge_project: hoshi-view
109
71
  rubygems_version: 1.3.1
110
- signing_key:
111
- specification_version: 2
112
- summary: Nice, object-oriented, first-class views.
72
+ requirements: []
73
+
74
+ authors:
75
+ - Pete Elmore
76
+ date: 2009-02-10 08:00:00 +00:00
77
+ platform: ruby
113
78
  test_files: []
114
79
 
80
+ version: !ruby/object:Gem::Version
81
+ version: 0.1.4
82
+ require_paths:
83
+ - lib
84
+ dependencies:
85
+ - !ruby/object:Gem::Dependency
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
92
+ type: :runtime
93
+ version_requirement:
94
+ name: metaid
95
+ - !ruby/object:Gem::Dependency
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - '>='
99
+ - !ruby/object:Gem::Version
100
+ version: "0"
101
+ version:
102
+ type: :runtime
103
+ version_requirement:
104
+ name: hpricot
105
+ bindir: bin
106
+ has_rdoc: true