hexp 0.0.1.pre2 → 0.0.1.pre3
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 +2 -0
- data/examples/filter.rb +4 -0
- data/examples/hexp_rails.rb +78 -0
- data/hexp.gemspec +2 -0
- data/lib/hexp.rb +2 -0
- data/lib/hexp/version.rb +1 -1
- data/spec/integration/literal_syntax_spec.rb +12 -0
- data/spec/unit/hexp/node/pp_spec.rb +5 -5
- metadata +38 -3
data/Rakefile
CHANGED
data/examples/filter.rb
CHANGED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'hexp/h'
|
2
|
+
|
3
|
+
# Here's an example of using bare-bones Hexp together with Rails. A lot of this
|
4
|
+
# boilerplate would have to be wrapped/hidden, but it's a start.
|
5
|
+
#
|
6
|
+
# An interesting thing to note is that by overriding content_tag we can make other
|
7
|
+
# view helpers like link_to return Hexp objects rather than strings.
|
8
|
+
|
9
|
+
class UsersController < ApplicationController
|
10
|
+
def index
|
11
|
+
render :inline => UserIndexPage.new(User.all).to_html
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class UserIndexPage # < Hexp::Rails::Widget perhaps?
|
16
|
+
include ActionView::Helpers::UrlHelper
|
17
|
+
include ActionDispatch::Routing::UrlFor
|
18
|
+
include Rails.application.routes.url_helpers
|
19
|
+
|
20
|
+
delegate :to_html, to: :to_hexp
|
21
|
+
attr_reader :users
|
22
|
+
|
23
|
+
def initialize(users)
|
24
|
+
@users = users
|
25
|
+
end
|
26
|
+
|
27
|
+
def to_hexp
|
28
|
+
H[:div, [
|
29
|
+
[:h1, "Listing users"],
|
30
|
+
[:table, [
|
31
|
+
[:thead, [
|
32
|
+
[:tr, headings.map{|h| [:th, h]}]
|
33
|
+
]
|
34
|
+
],
|
35
|
+
[:tbody, users.map do |user|
|
36
|
+
H[:tr,
|
37
|
+
fields_for(user).map do |field|
|
38
|
+
[:td, [field]]
|
39
|
+
end
|
40
|
+
]
|
41
|
+
end
|
42
|
+
]
|
43
|
+
]
|
44
|
+
]
|
45
|
+
]
|
46
|
+
]
|
47
|
+
end
|
48
|
+
|
49
|
+
def headings
|
50
|
+
['Name', 'Email', nil, nil, nil]
|
51
|
+
end
|
52
|
+
|
53
|
+
def fields_for(user)
|
54
|
+
[ user.name,
|
55
|
+
user.email,
|
56
|
+
link_to('Show', user),
|
57
|
+
link_to('Edit', edit_user_path(user)),
|
58
|
+
link_to('Destroy', user, method: :delete, data: { confirm: 'Are you sure?' })
|
59
|
+
]
|
60
|
+
end
|
61
|
+
|
62
|
+
def content_tag(tag, content, attrs)
|
63
|
+
H[tag, attrs, content]
|
64
|
+
end
|
65
|
+
|
66
|
+
# NullController to satisfy UrlHelper
|
67
|
+
def controller
|
68
|
+
Class.new do
|
69
|
+
def respond_to?(*args)
|
70
|
+
false
|
71
|
+
end
|
72
|
+
|
73
|
+
def method_missing(*args)
|
74
|
+
return self
|
75
|
+
end
|
76
|
+
end.new
|
77
|
+
end
|
78
|
+
end
|
data/hexp.gemspec
CHANGED
@@ -16,5 +16,7 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.test_files = `git ls-files -- spec`.split($/)
|
17
17
|
gem.extra_rdoc_files = %w[README.md]
|
18
18
|
|
19
|
+
gem.add_dependency 'nokogiri', '~> 1.5.9'
|
19
20
|
gem.add_dependency 'ice_nine', '~> 0.7.0'
|
21
|
+
gem.add_dependency 'equalizer', '~> 0.0.5'
|
20
22
|
end
|
data/lib/hexp.rb
CHANGED
data/lib/hexp/version.rb
CHANGED
@@ -4,14 +4,14 @@ describe Hexp::Node, 'pp' do
|
|
4
4
|
subject { object.pp }
|
5
5
|
|
6
6
|
context 'with no attributes or children' do
|
7
|
-
let(:object) {
|
8
|
-
it { should == '
|
7
|
+
let(:object) { H[:p, {}] }
|
8
|
+
it { should == 'H[:p]'}
|
9
9
|
end
|
10
10
|
|
11
11
|
context 'with a single child' do
|
12
|
-
let(:object) {
|
13
|
-
it { should == %q^
|
14
|
-
|
12
|
+
let(:object) { H[:p, [ [:abbr, {title: 'YAGNI'}, "You ain't gonna need it"] ]] }
|
13
|
+
it { should == %q^H[:p, [
|
14
|
+
H[:abbr, {"title"=>"YAGNI"}, [
|
15
15
|
"You ain't gonna need it"]]]]^.gsub(' '*22, '')
|
16
16
|
}
|
17
17
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hexp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.pre3
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
12
|
+
date: 2013-06-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: nokogiri
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 1.5.9
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.5.9
|
14
30
|
- !ruby/object:Gem::Dependency
|
15
31
|
name: ice_nine
|
16
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -27,6 +43,22 @@ dependencies:
|
|
27
43
|
- - ~>
|
28
44
|
- !ruby/object:Gem::Version
|
29
45
|
version: 0.7.0
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: equalizer
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.0.5
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.0.5
|
30
62
|
description: HTML expressions
|
31
63
|
email:
|
32
64
|
- arne@arnebrasseur.net
|
@@ -50,6 +82,7 @@ files:
|
|
50
82
|
- config/reek.yml
|
51
83
|
- config/yardstick.yml
|
52
84
|
- examples/filter.rb
|
85
|
+
- examples/hexp_rails.rb
|
53
86
|
- hexp.gemspec
|
54
87
|
- lib/hexp.rb
|
55
88
|
- lib/hexp/dom.rb
|
@@ -62,6 +95,7 @@ files:
|
|
62
95
|
- lib/hexp/nokogiri/equality.rb
|
63
96
|
- lib/hexp/text_node.rb
|
64
97
|
- lib/hexp/version.rb
|
98
|
+
- spec/integration/literal_syntax_spec.rb
|
65
99
|
- spec/shared_helper.rb
|
66
100
|
- spec/spec_helper.rb
|
67
101
|
- spec/unit/hexp/node/domize_spec.rb
|
@@ -86,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
120
|
version: '0'
|
87
121
|
segments:
|
88
122
|
- 0
|
89
|
-
hash:
|
123
|
+
hash: -105489159819991926
|
90
124
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
125
|
none: false
|
92
126
|
requirements:
|
@@ -100,6 +134,7 @@ signing_key:
|
|
100
134
|
specification_version: 3
|
101
135
|
summary: HTML expressions
|
102
136
|
test_files:
|
137
|
+
- spec/integration/literal_syntax_spec.rb
|
103
138
|
- spec/shared_helper.rb
|
104
139
|
- spec/spec_helper.rb
|
105
140
|
- spec/unit/hexp/node/domize_spec.rb
|