form_input 0.9.0.pre1 → 0.9.0.pre2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://img.shields.io/gem/v/form_input.svg)](http://rubygems.org/gems/form_input) [![Build Status](https://travis-ci.org/raxoft/form_input.svg?branch=master)](http://travis-ci.org/raxoft/form_input) [![Dependency Status](https://img.shields.io/gemnasium/raxoft/form_input.svg)](https://gemnasium.com/raxoft/form_input) [![Code Climate](https://img.shields.io/codeclimate/github/raxoft/form_input.svg)](https://codeclimate.com/github/raxoft/form_input) [![Coverage](https://img.shields.io/codeclimate/coverage/github/raxoft/form_input.svg)](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
|