page-objectify 0.0.5 → 0.0.6
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/lib/page-objectify/config.rb +2 -1
- data/lib/page-objectify/dom_to_ruby.rb +19 -1
- data/lib/page-objectify/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27b019b4792a400a13d6d7356b3f30baa32d1bdc
|
4
|
+
data.tar.gz: d27150057d0d9c302230501d439cd2874e80cf5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c421161615a170a01c336305efc5d2ab73895e26058bb9533c570029371027dfed4d851d314e4296fc3274bdc9b27c17ea48a2fd29aa13181c6c3969d477482b
|
7
|
+
data.tar.gz: e1bc48f582cead0364858f553e75a20181fed70e0a284b2f975566cbf7762db914d0afc1c38484fb6dfb2fbbf73083b5c2deadc7eac099b3d1f8508b1958f92c
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Change Log
|
2
2
|
|
3
|
+
## [v0.0.5](https://github.com/smoll/page-objectify/tree/v0.0.5) (2015-11-10)
|
4
|
+
[Full Changelog](https://github.com/smoll/page-objectify/compare/v0.0.4...v0.0.5)
|
5
|
+
|
6
|
+
**Fixed bugs:**
|
7
|
+
|
8
|
+
- HTML id with dashes should be converted into valid PO accessor method names [\#10](https://github.com/smoll/page-objectify/issues/10)
|
9
|
+
|
3
10
|
## [v0.0.4](https://github.com/smoll/page-objectify/tree/v0.0.4) (2015-11-10)
|
4
11
|
[Full Changelog](https://github.com/smoll/page-objectify/compare/v0.0.3...v0.0.4)
|
5
12
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module PageObjectify
|
2
2
|
class Config
|
3
|
-
attr_reader :generator_class, :page, :base, :file
|
3
|
+
attr_reader :generator_class, :page, :base, :file, :method_name_mapping
|
4
4
|
|
5
5
|
def initialize(**keywords)
|
6
6
|
@generator_class = keywords[:generator_class] # => "GooglePageGenerator"
|
@@ -8,6 +8,7 @@ module PageObjectify
|
|
8
8
|
@page = keywords[:page] || truncated # => "GooglePage"
|
9
9
|
@base = keywords[:base] || "BasePage"
|
10
10
|
@file = keywords[:file] || "#{underscorize(truncated)}.rb" # => google_page.rb
|
11
|
+
@method_name_mapping = keywords[:method_name_mapping] || []
|
11
12
|
validate_configs
|
12
13
|
end
|
13
14
|
|
@@ -1,12 +1,14 @@
|
|
1
1
|
require "unparser"
|
2
2
|
require "page-objectify/ast_maker"
|
3
3
|
require "page-objectify/config"
|
4
|
+
require "page-objectify/logging"
|
4
5
|
|
5
6
|
module PageObjectify
|
6
7
|
# Takes an Array of DOM elements
|
7
8
|
# and generates Ruby code (page class containing PageObject::Accessors)
|
8
9
|
class DOMToRuby
|
9
10
|
include ASTMaker
|
11
|
+
include Logging
|
10
12
|
|
11
13
|
def initialize(dom, config)
|
12
14
|
@dom = dom
|
@@ -36,8 +38,15 @@ module PageObjectify
|
|
36
38
|
def accessors
|
37
39
|
res = []
|
38
40
|
@dom.to_accessors.each do |element|
|
41
|
+
method_name = element[:id].downcase # because HTML ids are case-insensitive
|
42
|
+
@config.method_name_mapping.each { |k,v| method_name.sub!(k, v) }
|
43
|
+
unless valid_method_name?(method_name)
|
44
|
+
logger.warn "Final method name #{method_name} is not a valid Ruby method name! Stripping non-alpha characters as a last resort!"
|
45
|
+
strip_non_alpha_or_underscore!(method_name)
|
46
|
+
end
|
47
|
+
|
39
48
|
res << s(:send, nil, element[:accessor].to_sym,
|
40
|
-
s(:sym,
|
49
|
+
s(:sym, method_name.to_sym),
|
41
50
|
s(:hash,
|
42
51
|
s(:pair,
|
43
52
|
s(:sym, :id),
|
@@ -48,5 +57,14 @@ module PageObjectify
|
|
48
57
|
end
|
49
58
|
res
|
50
59
|
end
|
60
|
+
|
61
|
+
def valid_method_name?(s)
|
62
|
+
# From http://stackoverflow.com/a/4379197
|
63
|
+
!!(/\A(?:[a-z_]\w*[?!=]?|\[\]=?|<<|>>|\*\*|[!~+\*\/%&^|-]|[<>]=?|<=>|={2,3}|![=~]|=~)\z/i =~ s)
|
64
|
+
end
|
65
|
+
|
66
|
+
def strip_non_alpha_or_underscore!(m)
|
67
|
+
m.gsub!(/[^a-z_]/, '')
|
68
|
+
end
|
51
69
|
end
|
52
70
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: page-objectify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shujon Mollah
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-11-
|
11
|
+
date: 2015-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -209,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
209
|
version: '0'
|
210
210
|
requirements: []
|
211
211
|
rubyforge_project:
|
212
|
-
rubygems_version: 2.4.
|
212
|
+
rubygems_version: 2.4.6
|
213
213
|
signing_key:
|
214
214
|
specification_version: 4
|
215
215
|
summary: A Ruby page class generator (for use with the page-object gem)
|