form_input 0.9.0.pre1 → 0.9.0.pre2
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/.travis.gemfile +15 -0
- data/.travis.yml +23 -0
- data/.yardopts +3 -0
- data/README.md +8 -1
- data/form_input.gemspec +2 -1
- data/lib/form_input/localize.rb +7 -7
- data/test/localize/en.yml +10 -49
- data/test/test_localize.rb +26 -2
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ddb2e82dd3950263088d75c48e14abda401c0b6
|
4
|
+
data.tar.gz: 1ac5450c7a5fd75dba03ff109801c936dc35f9ea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e6ea10d32dca8dad8237cb7a25e74b4dc0d4916a93668ae3504f81b85d0f67fb689553314914e8097dc891703e47908f49e999a1251803ca960a4e8c117e4ab1
|
7
|
+
data.tar.gz: a485d6797a5cff27a6a9a900b5340f2abc4a27c27b8f4b0e6a85dcdf2a118972bd907e0d21d9213bd3c10348976cb02b8475cbef1331f555e6e304abc81c53d9
|
data/.travis.gemfile
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Gemfile for TravisCI integration.
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
gem 'rake'
|
6
|
+
gem 'rack', '~> 1.5'
|
7
|
+
gem 'rack-test'
|
8
|
+
gem 'bacon', '~> 1.2'
|
9
|
+
gem 'r18n-core', '~> 2.0'
|
10
|
+
|
11
|
+
if ENV[ 'CODECLIMATE_REPO_TOKEN' ]
|
12
|
+
gem 'codeclimate-test-reporter'
|
13
|
+
end
|
14
|
+
|
15
|
+
# EOF #
|
data/.travis.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# TravisCI config.
|
2
|
+
|
3
|
+
language: ruby
|
4
|
+
rvm:
|
5
|
+
- ruby-head
|
6
|
+
- 2.3.1
|
7
|
+
- 2.2.5
|
8
|
+
- 2.1.10
|
9
|
+
- 2.0.0
|
10
|
+
- rbx-2
|
11
|
+
- jruby-head
|
12
|
+
gemfile: .travis.gemfile
|
13
|
+
env:
|
14
|
+
global:
|
15
|
+
# travis encrypt -r raxoft/form_input CODECLIMATE_REPO_TOKEN=???
|
16
|
+
secure: "OGkm2MO8oBOsE6qQ95gca6z3pi8m5UN6vtoD+hlvR6dJpj6n4nlfWOsKq0MJWC5j1260p6EQCfKkfXA0s/rtYbdHpgb4Qhtm9/wKwwyOItyMMdXfaazNhKhLRLnib9RSSxXxjpZY40Lcsb3HWjZbjeIEgu03gn8RtXkmJFG4gqxnpmzw4Xloq8AWl0tO3ItP07VGhbJjCEftweGlICiNZ9XQPq87Bnqr5D9NqBkHAUJm9SpG15y9Dt9by3OPq/PXnh/juXybP7V2IMGhFu1WudLVDy2Bd1VQVbFb7uk51Mko8esDFr5WK0E675CJ2CCm8AaoA+Uwk5cpSB2HCbZ80OSE+Jl60F8NqBfxMvpw/pY0xb/tdGLnXAureU9eWted3XTwtZoq+k/7TdirFCU5u48VxszrJs96QoVi2rh1iPwBXZmGO4aEfkCT/wmqL0Tbi0s69XjjjtNINvXwynXmYG3PbPKG0iDKIJAvwdh+KmBLLd+cKeZp5jJ5npgmsWRcgMm2HHGskb8etv4AFSVvHA8PDQR7E/GalKhSZclUjLlOq+qhGklCi/Mhy8XlAIn+yIXzL3Rlw/bWL56iC/PHzi5vNC4ia8PwlPB+FqOS5T5vwtj4NcDc+6k6yTWRNZZ9cEBeS2xO0TOAFe3qE//PkztW7tJ0Qlgc0aS9Q2+uH9Y="
|
17
|
+
matrix:
|
18
|
+
allow_failures:
|
19
|
+
- rvm: rbx-2
|
20
|
+
- rvm: ruby-head
|
21
|
+
- rvm: jruby-head
|
22
|
+
|
23
|
+
# EOF #
|
data/.yardopts
ADDED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Form input
|
2
2
|
|
3
|
-
|
3
|
+
[](http://rubygems.org/gems/form_input) [](http://travis-ci.org/raxoft/form_input) [](https://gemnasium.com/raxoft/form_input) [](https://codeclimate.com/github/raxoft/form_input) [](https://codeclimate.com/github/raxoft/form_input)
|
4
|
+
|
5
|
+
Form input is a gem which helps dealing with web request input and with the creation of HTML forms.
|
4
6
|
|
5
7
|
Install the gem:
|
6
8
|
|
@@ -3140,6 +3142,11 @@ Thanks for that.
|
|
3140
3142
|
|
3141
3143
|
Copyright © 2015-2016 Patrik Rak
|
3142
3144
|
|
3145
|
+
Translations contributed by
|
3146
|
+
Maroš Rovňák (Slovak)
|
3147
|
+
and
|
3148
|
+
Eryk Dwornicki (Polish).
|
3149
|
+
|
3143
3150
|
The `FormInput` is released under the MIT license.
|
3144
3151
|
|
3145
3152
|
|
data/form_input.gemspec
CHANGED
@@ -4,7 +4,7 @@ require File.expand_path( '../lib/form_input/version', __FILE__ )
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = 'form_input'
|
7
|
-
s.version = FormInput::Version::STRING + '.
|
7
|
+
s.version = FormInput::Version::STRING + '.pre2'
|
8
8
|
s.summary = 'Form helper which sanitizes, transforms, validates and encapsulates web request input.'
|
9
9
|
s.description = <<EOT
|
10
10
|
This gem allows you to describe your forms using a simple DSL
|
@@ -26,6 +26,7 @@ EOT
|
|
26
26
|
s.required_ruby_version = '>= 2.0.0'
|
27
27
|
s.add_runtime_dependency 'rack', '~> 1.5'
|
28
28
|
s.add_development_dependency 'bacon', '~> 1.2'
|
29
|
+
s.add_development_dependency 'rack-test', '~> 0.6'
|
29
30
|
s.add_development_dependency 'r18n-core', '~> 2.0'
|
30
31
|
end
|
31
32
|
|
data/lib/form_input/localize.rb
CHANGED
@@ -7,7 +7,7 @@ require 'form_input/r18n'
|
|
7
7
|
class Hash
|
8
8
|
# Convert all hash keys to strings recursively.
|
9
9
|
def stringify_keys
|
10
|
-
map{ |k, v| [ k.to_s, v.respond_to?( :stringify_keys ) ? v.stringify_keys : v ] }
|
10
|
+
Hash[ map{ |k, v| [ k.to_s, v.respond_to?( :stringify_keys ) ? v.stringify_keys : v ] } ]
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -23,25 +23,25 @@ class FormInput
|
|
23
23
|
|
24
24
|
# Get hash of all parameter values which may need to be localized.
|
25
25
|
def translation_hash
|
26
|
-
opts.select{ |k, v| v.is_a? String }.sort_by{ |k, v| [ translation_order( k ), k ] }
|
26
|
+
Hash[ opts.select{ |k, v| v.is_a? String }.sort_by{ |k, v| [ translation_order( k ), k ] } ]
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
# Get hash of all form values which may need to be localized.
|
31
31
|
def self.translation_hash
|
32
|
-
hash = form_params.map{ |k, v| [ k, v.translation_hash ] }.reject{ |k, v| v.empty? }
|
32
|
+
hash = Hash[ form_params.map{ |k, v| [ k, v.translation_hash ] }.reject{ |k, v| v.empty? } ]
|
33
33
|
hash[ :steps ] = form_steps.reject{ |k, v| v.nil? } if form_steps
|
34
34
|
hash
|
35
35
|
end
|
36
36
|
|
37
37
|
# Get list of all classes inherited from FormInput.
|
38
38
|
def self.forms
|
39
|
-
ObjectSpace.each_object( Class ).select{ |x| x < FormInput }
|
39
|
+
ObjectSpace.each_object( Class ).select{ |x| x < FormInput and x.name }.sort_by{ |x| x.name }
|
40
40
|
end
|
41
41
|
|
42
|
-
# Get string containing YAML representation of the default R18n translation for
|
43
|
-
def self.default_translation
|
44
|
-
hash = forms.
|
42
|
+
# Get string containing YAML representation of the default R18n translation for all/given FormInput classes.
|
43
|
+
def self.default_translation(forms = self.forms)
|
44
|
+
hash = Hash[ forms.map{ |x| [ x.translation_name, x.translation_hash ] }.reject{ |k, v| v.empty? } ]
|
45
45
|
YAML::dump( { forms: hash }.stringify_keys )
|
46
46
|
end
|
47
47
|
end
|
data/test/localize/en.yml
CHANGED
@@ -1,63 +1,24 @@
|
|
1
1
|
---
|
2
2
|
forms:
|
3
|
-
test_form:
|
4
|
-
email:
|
5
|
-
title: Email
|
6
|
-
form_title: Your email
|
7
|
-
error_title: email address
|
8
|
-
password:
|
9
|
-
title: Password
|
10
|
-
msg: Password must contain one lowercase and one uppercase letter and one digit
|
11
|
-
test_inflection_form:
|
12
|
-
name:
|
13
|
-
title: Name
|
14
|
-
address:
|
15
|
-
title: Address
|
16
|
-
state:
|
17
|
-
title: State
|
18
|
-
author:
|
19
|
-
title: Author
|
20
|
-
friends:
|
21
|
-
title: Friends
|
22
|
-
chars:
|
23
|
-
title: Characters
|
24
|
-
keywords:
|
25
|
-
title: Keywords
|
26
|
-
notes:
|
27
|
-
title: Notes
|
28
3
|
test_localize_form:
|
29
4
|
simple:
|
30
5
|
title: String
|
6
|
+
complex:
|
7
|
+
title: Title
|
8
|
+
form_title: Form Title
|
9
|
+
error_title: Error Title
|
10
|
+
required_msg: "%p is required!"
|
11
|
+
msg: "%p must contain at least one letter"
|
12
|
+
reject_msg: "%p must not contain a digit"
|
13
|
+
help: Help
|
14
|
+
placeholder: Placeholder
|
15
|
+
subtitle: Subtitle
|
31
16
|
utf:
|
32
17
|
title: "ěščřžýáíéúůďťň"
|
33
18
|
yaml:
|
34
19
|
title: "%"
|
35
20
|
msg: "{}"
|
36
|
-
test_localized_steps_form:
|
37
21
|
steps:
|
38
22
|
one: First
|
39
23
|
two: Second
|
40
24
|
three: Third
|
41
|
-
test_r18n_form:
|
42
|
-
msg:
|
43
|
-
title: Message
|
44
|
-
msg2:
|
45
|
-
title: Second Message
|
46
|
-
test_steps_form:
|
47
|
-
steps:
|
48
|
-
intro: Intro
|
49
|
-
email: Email
|
50
|
-
name: Name
|
51
|
-
address: Address
|
52
|
-
message: Message
|
53
|
-
test_time_types_form:
|
54
|
-
time:
|
55
|
-
placeholder: YYYY-MM-DD HH:MM:SS
|
56
|
-
us_date:
|
57
|
-
placeholder: MM/DD/YYYY
|
58
|
-
uk_date:
|
59
|
-
placeholder: DD/MM/YYYY
|
60
|
-
eu_date:
|
61
|
-
placeholder: D.M.YYYY
|
62
|
-
hours:
|
63
|
-
placeholder: HH:MM
|
data/test/test_localize.rb
CHANGED
@@ -5,18 +5,42 @@ require_relative 'helper'
|
|
5
5
|
require 'form_input/localize'
|
6
6
|
|
7
7
|
class TestLocalizeForm < FormInput
|
8
|
+
|
9
|
+
define_steps(
|
10
|
+
one: "First",
|
11
|
+
two: "Second",
|
12
|
+
three: "Third",
|
13
|
+
four: nil,
|
14
|
+
)
|
8
15
|
param :simple, "String"
|
16
|
+
param :complex, "Title",
|
17
|
+
subtitle: "Subtitle",
|
18
|
+
form_title: "Form Title",
|
19
|
+
error_title: "Error Title",
|
20
|
+
required_msg: "%p is required!",
|
21
|
+
match: /[a-z]/i,
|
22
|
+
msg: "%p must contain at least one letter",
|
23
|
+
reject: /\d/,
|
24
|
+
reject_msg: "%p must not contain a digit",
|
25
|
+
help: "Help",
|
26
|
+
placeholder: "Placeholder"
|
9
27
|
param :utf, "ěščřžýáíéúůďťň"
|
10
28
|
param :yaml, '%', msg: '{}'
|
29
|
+
|
11
30
|
end
|
12
31
|
|
13
32
|
describe FormInput do
|
14
33
|
|
34
|
+
should 'provide helper which returns all form classes' do
|
35
|
+
FormInput.forms.each{ |x| x.should < FormInput }
|
36
|
+
FormInput.forms.should.include TestLocalizeForm
|
37
|
+
end
|
38
|
+
|
15
39
|
should 'provide helper to create default translation file' do
|
16
|
-
text = FormInput.default_translation
|
40
|
+
text = FormInput.default_translation( [ TestLocalizeForm ] )
|
17
41
|
name = File.expand_path( "#{__FILE__}/../localize/en.yml" )
|
18
42
|
if File.exists?( name )
|
19
|
-
text.should == File.read( name )
|
43
|
+
YAML.load( text ).should == YAML.load( File.read( name ) )
|
20
44
|
else
|
21
45
|
File.write( name, text )
|
22
46
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: form_input
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.0.
|
4
|
+
version: 0.9.0.pre2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Patrik Rak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-06-
|
11
|
+
date: 2016-06-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rack-test
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.6'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.6'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: r18n-core
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,9 @@ extensions: []
|
|
66
80
|
extra_rdoc_files: []
|
67
81
|
files:
|
68
82
|
- ".gitignore"
|
83
|
+
- ".travis.gemfile"
|
84
|
+
- ".travis.yml"
|
85
|
+
- ".yardopts"
|
69
86
|
- LICENSE
|
70
87
|
- README.md
|
71
88
|
- Rakefile
|