page-objectify 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|