constructor-core 0.7.7 → 0.7.8
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/app/assets/javascripts/constructor_core/application.js.coffee +1 -1
- data/lib/constructor-core.rb +3 -21
- data/lib/constructor_core/string.rb +25 -0
- data/lib/constructor_core/version.rb +1 -1
- data/spec/lib/constructor_core/string_spec.rb +15 -0
- metadata +6 -5
- data/app/assets/javascripts/constructor_core/urlify.js +0 -82
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b60b02c43e1d5689a737a60b3f9662664f4bae85
|
4
|
+
data.tar.gz: 308e0745ed8b560142e7e63a7a83aa694738d0a5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 594eaf1aa5baa58848b1b7b7a5475a42f0d4c8571d4d1d589fed404c163969e24c1d6545e5e7659a5fc9d2c14f4131cbee2f2cfc016a7f2ec3e6d81ec57b2ab7
|
7
|
+
data.tar.gz: e1767bd18417967cd394d3ee96038322d987e9eeccdde773311a62d6358b39e776cb70b250618c86a801f37617fa91a01b35c6529f9dd736fac12ec12f83e1e2
|
data/lib/constructor-core.rb
CHANGED
@@ -1,25 +1,7 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'devise'
|
2
4
|
require 'bootstrap-sass'
|
3
5
|
require 'font-awesome-sass-rails'
|
4
6
|
require 'constructor_core/engine'
|
5
|
-
|
6
|
-
class String
|
7
|
-
def numeric?
|
8
|
-
return true if self =~ /^\d+$/
|
9
|
-
true if Float(self) rescue false
|
10
|
-
end
|
11
|
-
|
12
|
-
def boolean?
|
13
|
-
if self =~ (/(true|yes)$/i) || self =~ (/(false|no)$/i)
|
14
|
-
return true
|
15
|
-
else
|
16
|
-
return false
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_bool
|
21
|
-
return true if self == true || self =~ (/(true|t|yes|y|1)$/i)
|
22
|
-
return false if self == false || self.blank? || self =~ (/(false|f|no|n|0)$/i)
|
23
|
-
raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
|
24
|
-
end
|
25
|
-
end
|
7
|
+
require 'constructor_core/string'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class String
|
2
|
+
def numeric?
|
3
|
+
return true if self =~ /^\d+$/
|
4
|
+
true if Float(self) rescue false
|
5
|
+
end
|
6
|
+
|
7
|
+
def boolean?
|
8
|
+
if self =~ (/(true|yes)$/i) || self =~ (/(false|no)$/i)
|
9
|
+
return true
|
10
|
+
else
|
11
|
+
return false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def to_boolean
|
16
|
+
return true if self == true || self =~ (/(true|t|yes|y|1)$/i)
|
17
|
+
return false if self == false || self.blank? || self =~ (/(false|f|no|n|0)$/i)
|
18
|
+
raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
|
19
|
+
end
|
20
|
+
|
21
|
+
def accusative
|
22
|
+
self.sub(/а$/, 'у').sub(/я$/, 'ю')
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
|
5
|
+
module ConstructorCore
|
6
|
+
describe 'String' do
|
7
|
+
describe '#accusative' do
|
8
|
+
it 'should convert word to accusative' do
|
9
|
+
'проверка'.accusative.should == 'проверку'
|
10
|
+
'стол'.accusative.should == 'стол'
|
11
|
+
'категория'.accusative.should == 'категорию'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: constructor-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Zotov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -95,7 +95,6 @@ files:
|
|
95
95
|
- app/assets/javascripts/constructor_core/jquery_bundle.js.coffee
|
96
96
|
- app/assets/javascripts/constructor_core/keys_snippet.js
|
97
97
|
- app/assets/javascripts/constructor_core/retina.js
|
98
|
-
- app/assets/javascripts/constructor_core/urlify.js
|
99
98
|
- app/assets/stylesheets/constructor_core/application.css.scss
|
100
99
|
- app/assets/stylesheets/constructor_core/main.css.scss
|
101
100
|
- app/controllers/constructor_core/application_controller.rb
|
@@ -130,7 +129,9 @@ files:
|
|
130
129
|
- db/migrate/2_add_default_user.rb
|
131
130
|
- lib/constructor-core.rb
|
132
131
|
- lib/constructor_core/engine.rb
|
132
|
+
- lib/constructor_core/string.rb
|
133
133
|
- lib/constructor_core/version.rb
|
134
|
+
- spec/lib/constructor_core/string_spec.rb
|
134
135
|
- vendor/assets/javascripts/.gitkeep
|
135
136
|
- vendor/assets/javascripts/ckeditor/ckeditor.js
|
136
137
|
- vendor/assets/javascripts/ckeditor/config.js
|
@@ -302,5 +303,5 @@ rubygems_version: 2.0.3
|
|
302
303
|
signing_key:
|
303
304
|
specification_version: 4
|
304
305
|
summary: Constructor Core
|
305
|
-
test_files:
|
306
|
-
|
306
|
+
test_files:
|
307
|
+
- spec/lib/constructor_core/string_spec.rb
|
@@ -1,82 +0,0 @@
|
|
1
|
-
var RUSSIAN_MAP = {
|
2
|
-
'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',
|
3
|
-
'з':'z', 'и':'i', 'й':'y', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',
|
4
|
-
'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'ts',
|
5
|
-
'ч':'ch', 'ш':'sh', 'щ':'sch', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',
|
6
|
-
'я':'ya',
|
7
|
-
'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',
|
8
|
-
'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',
|
9
|
-
'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'Ts',
|
10
|
-
'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sch', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',
|
11
|
-
'Я':'Ya'
|
12
|
-
}
|
13
|
-
|
14
|
-
var ALL_DOWNCODE_MAPS=new Array()
|
15
|
-
ALL_DOWNCODE_MAPS[0]=RUSSIAN_MAP
|
16
|
-
|
17
|
-
var Downcoder = new Object();
|
18
|
-
Downcoder.Initialize = function()
|
19
|
-
{
|
20
|
-
if (Downcoder.map) // already made
|
21
|
-
return ;
|
22
|
-
Downcoder.map ={}
|
23
|
-
Downcoder.chars = '' ;
|
24
|
-
for(var i in ALL_DOWNCODE_MAPS)
|
25
|
-
{
|
26
|
-
var lookup = ALL_DOWNCODE_MAPS[i]
|
27
|
-
for (var c in lookup)
|
28
|
-
{
|
29
|
-
Downcoder.map[c] = lookup[c] ;
|
30
|
-
Downcoder.chars += c ;
|
31
|
-
}
|
32
|
-
}
|
33
|
-
Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;
|
34
|
-
}
|
35
|
-
|
36
|
-
downcode= function( slug )
|
37
|
-
{
|
38
|
-
Downcoder.Initialize() ;
|
39
|
-
var downcoded =""
|
40
|
-
var pieces = slug.match(Downcoder.regex);
|
41
|
-
if(pieces)
|
42
|
-
{
|
43
|
-
for (var i = 0 ; i < pieces.length ; i++)
|
44
|
-
{
|
45
|
-
if (pieces[i].length == 1)
|
46
|
-
{
|
47
|
-
var mapped = Downcoder.map[pieces[i]] ;
|
48
|
-
if (mapped != null)
|
49
|
-
{
|
50
|
-
downcoded+=mapped;
|
51
|
-
continue ;
|
52
|
-
}
|
53
|
-
}
|
54
|
-
downcoded+=pieces[i];
|
55
|
-
}
|
56
|
-
}
|
57
|
-
else
|
58
|
-
{
|
59
|
-
downcoded = slug;
|
60
|
-
}
|
61
|
-
return downcoded;
|
62
|
-
}
|
63
|
-
|
64
|
-
|
65
|
-
function URLify(s, num_chars) {
|
66
|
-
// changes, e.g., "Petty theft" to "petty_theft"
|
67
|
-
// remove all these words from the string before urlifying
|
68
|
-
s = downcode(s);
|
69
|
-
removelist = ["a", "an", "as", "at", "before", "but", "by", "for", "from",
|
70
|
-
"is", "in", "into", "like", "of", "off", "on", "onto", "per",
|
71
|
-
"since", "than", "the", "this", "that", "to", "up", "via",
|
72
|
-
"with"];
|
73
|
-
r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
|
74
|
-
s = s.replace(r, '');
|
75
|
-
// if downcode doesn't hit, the char will be stripped here
|
76
|
-
s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars
|
77
|
-
s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
|
78
|
-
s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens
|
79
|
-
s = s.toLowerCase(); // convert to lowercase
|
80
|
-
return s.substring(0, num_chars);// trim to first num_chars chars
|
81
|
-
}
|
82
|
-
|