smartname 0.1.6 → 0.1.7

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.6
1
+ 0.1.7
data/lib/smart_name.rb CHANGED
@@ -43,13 +43,6 @@ class SmartName < Object
43
43
  end
44
44
  end
45
45
 
46
- def unescape uri
47
- # can't instantiate because key doesn't resolve correctly in unescaped form
48
- # issue is peculiar to plus sign (+), which are interpreted as a space.
49
- # if we could make that not happen, we could avoid this (and handle spaces in urls)
50
- uri.gsub(' ','+').gsub '_',' '
51
- end
52
-
53
46
  def banned_re
54
47
  %r{#{ (['['] + SmartName.banned_array << SmartName.joint )*'\\' + ']' }}
55
48
  end
@@ -136,35 +129,42 @@ class SmartName < Object
136
129
  #~~~~~~~~~~~~~~~~~~~ PARTS ~~~~~~~~~~~~~~~~~~~
137
130
 
138
131
  alias simple? simple
139
- def junction?() not simple? end
140
-
141
- def left() @left ||= simple? ? nil : parts[0..-2]*SmartName.joint end
142
- def right() @right ||= simple? ? nil : parts[-1] end
143
-
144
- def left_name() @left_name ||= left && SmartName.new( left ) end
145
- def right_name() @right_name ||= right && SmartName.new( right ) end
146
-
147
- # Note that all names have a trunk and tag, but only junctions have left and right
148
-
149
- def trunk() @trunk ||= simple? ? s : left end
150
- def tag() @tag ||= simple? ? s : right end
151
-
152
- def trunk_name() @trunk_name ||= simple? ? self : left_name end
153
- def tag_name() @tag_name ||= simple? ? self : right_name end
154
-
155
- def part_names() @part_names ||= parts.map &:to_name end
156
- def pieces() @pieces ||= piece_names.map &:s end
157
-
158
- def piece_names
159
- @piece_names ||= if simple?
132
+ def junction?() not simple? end
133
+
134
+ def left() @left ||= simple? ? nil : parts[0..-2]*SmartName.joint end
135
+ def right() @right ||= simple? ? nil : parts[-1] end
136
+
137
+ def left_name() @left_name ||= left && SmartName.new( left ) end
138
+ def right_name() @right_name ||= right && SmartName.new( right ) end
139
+
140
+ # Note that all n ames have a trunk and tag, but only junctions have left and right
141
+
142
+ def trunk() @trunk ||= simple? ? s : left end
143
+ def tag() @tag ||= simple? ? s : right end
144
+
145
+ def trunk_name() @trunk_name ||= simple? ? self : left_name end
146
+ def tag_name() @tag_name ||= simple? ? self : right_name end
147
+
148
+ def part_names() @part_names ||= parts.map &:to_name end
149
+ def piece_names() @piece_names ||= pieces.map &:to_name end
150
+
151
+ def pieces
152
+ @pieces ||= if simple?
160
153
  [ self ]
161
154
  else
162
- trunk_name.piece_names + [ tag_name ]
155
+ junction_pieces = []
156
+ parts[1..-1].inject parts[0] do |left, right|
157
+ piece = [left, right] * SmartName.joint
158
+ junction_pieces << piece
159
+ piece
160
+ end
161
+ parts + junction_pieces
163
162
  end
164
163
  end
165
164
 
166
165
 
167
166
 
167
+
168
168
  #~~~~~~~~~~~~~~~~~~~ TRAITS / STARS ~~~~~~~~~~~~~~~~~~~
169
169
 
170
170
  #all the below seems pretty wagn-specific
@@ -64,6 +64,25 @@ describe SmartName do
64
64
  end
65
65
 
66
66
 
67
+ describe "parts and pieces" do
68
+ it "should produce simple strings for parts" do
69
+ "A+B+C+D".to_name.parts.should == %w{ A B C D }
70
+ end
71
+
72
+ it "should produce simple name objects for part_names" do
73
+ "A+B+C+D".to_name.part_names.should == %w{ A B C D }.map( &:to_name )
74
+ end
75
+
76
+ it "should produce compound strings for pieces" do
77
+ "A+B+C+D".to_name.pieces.should == %w{ A B C D A+B A+B+C A+B+C+D }
78
+ end
79
+
80
+ it "should produce compound name objects for piece_names" do
81
+ "A+B+C+D".to_name.piece_names.should == %w{ A B C D A+B A+B+C A+B+C+D }.map( &:to_name )
82
+ end
83
+ end
84
+
85
+
67
86
 
68
87
 
69
88
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartname
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-12-04 00:00:00.000000000 Z
13
+ date: 2012-12-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -143,7 +143,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
143
  version: '0'
144
144
  segments:
145
145
  - 0
146
- hash: -4151662497955382901
146
+ hash: 3336685085994902956
147
147
  required_rubygems_version: !ruby/object:Gem::Requirement
148
148
  none: false
149
149
  requirements: