parsi-localize 0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in .gemspec
4
+ gemspec
data/README.markdown ADDED
@@ -0,0 +1,38 @@
1
+ ParsiLocalize
2
+ =============
3
+
4
+ Change I18n localize to use parsi digits and jalaly dates in farsi (فارسی) locale.
5
+ This gem contains two sections
6
+
7
+ ParsiDigits
8
+ -----------
9
+ Simply change digits in a string/integer/float to unicode parsi digits.
10
+
11
+ (In all the example below we have right to left issues to present output!)
12
+
13
+ Example:
14
+
15
+ ‪"15,000 تومان".with_parsi_digits => "۱۵,۰۰۰ تومان"
16
+ 123.25.with_parsi_digits => "۱۲۳/۲۵"
17
+
18
+
19
+ ParsiLocalize
20
+ -------------
21
+ Change behaivor of I18n#localize so that it localize digits and dates in 'farsi' locale.
22
+
23
+ I18n.l ‪"15,000 تومان" => "۱۵,۰۰۰ تومان"
24
+ I18n.l Time.now, fromat: "%y/%m/%d %H:%M:%S" => "۹۰/۱۰/۱۳ ۰۵:۴۳:۳۲"
25
+
26
+ If you don't set date format, it uses the default locale format (time.formats.default) wich you can set in your locale file. For more info on dateformating see 'jalalidate' docs
27
+ For example with
28
+
29
+ fa:
30
+ time:
31
+ formats:
32
+ default: "%d %b %y"
33
+
34
+ in your locale file you will get:
35
+
36
+ I18n.l Time.now => "۱۳ دی ۹۰"
37
+
38
+ Copyright (c) 2012 Hassan Zamani, released under the MIT license.
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ task default: :test
5
+
6
+ desc 'Test the parsi-localize plugin.'
7
+ Rake::TestTask.new(:test) do |t|
8
+ t.libs << 'lib'
9
+ t.libs << 'test'
10
+ t.pattern = 'test/**/*_test.rb'
11
+ t.verbose = true
12
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'parsi_localize'
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ class String
4
+ def with_parsi_digits
5
+ digits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']
6
+ gsub(/\d/) { |d| digits[d.to_i] }
7
+ end
8
+
9
+ def with_parsi_digits!
10
+ digits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹']
11
+ gsub!(/\d/) { |d| digits[d.to_i] }
12
+ end
13
+ end
14
+
15
+ class Integer
16
+ def with_parsi_digits
17
+ to_s.with_parsi_digits
18
+ end
19
+ end
20
+
21
+ class Float
22
+ def with_parsi_digits
23
+ to_s.with_parsi_digits.sub '.', '/'
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ require 'parsi_digits'
2
+ require 'jalalidate'
3
+ require 'i18n'
4
+
5
+ module I18n
6
+ class << self
7
+ def localize(object, options = {})
8
+ locale = options.delete(:locale) || config.locale
9
+ format = options.delete(:format) || :default
10
+
11
+ if locale == :fa and not object.nil?
12
+ if object.respond_to? :with_parsi_digits
13
+ object.with_parsi_digits
14
+ elsif object.is_a? Date or object.is_a? Time
15
+ jdate = JalaliDate.new object
16
+ format = I18n.t("time.formats.default") if format == :default
17
+ jdate.strftime(format).with_parsi_digits
18
+ end
19
+ else
20
+ config.backend.localize(locale, object, format, options)
21
+ end
22
+ end
23
+ alias :l :localize
24
+ end
25
+ end
data/lib/version.rb ADDED
@@ -0,0 +1,5 @@
1
+ module I18n
2
+ module ParsiLocalize
3
+ VERSION = "0.1"
4
+ end
5
+ end
data/locale/en.yml ADDED
File without changes
data/locale/fa.yml ADDED
@@ -0,0 +1,8 @@
1
+ fa:
2
+ time:
3
+ formats:
4
+ default: "%y/%m/%d %H:%M:%S"
5
+ short: "%d %b، %H:%M"
6
+ long: "%A، %e %b %Y، ساعت %H:%M:%S (%Z)"
7
+ am: "قبل از ظهر"
8
+ pm: "بعد از ظهر"
@@ -0,0 +1,29 @@
1
+ $:.push File.expand_path('../lib', __FILE__)
2
+ require 'version'
3
+
4
+ Gem::Specification.new do |s|
5
+
6
+ # Description Meta...
7
+ s.name = 'parsi-localize'
8
+ s.version = I18n::ParsiLocalize::VERSION
9
+ s.platform = Gem::Platform::RUBY
10
+ s.author = 'Hassan Zamani'
11
+ s.email = 'hsn.zamani@gmail.com'
12
+ s.homepage = 'http://github.com/hzamani/parsi_localize'
13
+ s.summary = 'Change I18n localize to use parsi digits and jalaly dates in farsi locale'
14
+ s.description = 'Change I18n localize to use parsi digits and jalaly dates in farsi locale'
15
+
16
+
17
+ # Load Paths...
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ['lib']
22
+
23
+
24
+ # Dependencies (installed via 'bundle install')...
25
+ s.add_development_dependency("bundler")
26
+ s.add_development_dependency("rake")
27
+ s.add_development_dependency("i18n")
28
+ s.add_development_dependency("jalalidate")
29
+ end
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test_helper'
4
+
5
+ class ParsiDigitsTest < Test::Unit::TestCase
6
+ def test_string_with_parsi_digits
7
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", "9876543210".with_parsi_digits
8
+ end
9
+
10
+ def test_integer_with_parsi_digits
11
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", 9876543210.with_parsi_digits
12
+ end
13
+
14
+ def test_float_with_parsi_digits
15
+ assert_equal "۹/۰۸۷۶۵۴۳۲۱", 9.087654321.with_parsi_digits
16
+ end
17
+
18
+ def test_localize
19
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", I18n.l("9876543210")
20
+ assert_equal "۹۸۷۶۵۴۳۲۱۰", I18n.l(9876543210)
21
+ assert_equal "۹/۰۸۷۶۵۴۳۲۱", I18n.l(9.087654321)
22
+ time = Time.mktime(2012, 1, 3, 5, 43, 32)
23
+ date = Time.mktime(2012, 1, 3)
24
+ assert_equal "۹۰/۱۰/۱۳ ۰۵:۴۳:۳۲", I18n.l(time)
25
+ assert_equal "۹۰/۱۰/۱۳ ۰۰:۰۰:۰۰", I18n.l(date)
26
+ assert_equal "۱۳ دی ۹۰", I18n.l(time, format: "%d %b %y")
27
+ end
28
+ end
@@ -0,0 +1,7 @@
1
+ require 'test/unit'
2
+ require 'i18n'
3
+ require 'parsi_digits'
4
+ require 'parsi_localize'
5
+
6
+ I18n.load_path = ['locale/fa.yml']
7
+ I18n.default_locale = :fa
metadata ADDED
@@ -0,0 +1,103 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: parsi-localize
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Hassan Zamani
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: &21869540 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *21869540
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &21869040 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: *21869040
36
+ - !ruby/object:Gem::Dependency
37
+ name: i18n
38
+ requirement: &21868620 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *21868620
47
+ - !ruby/object:Gem::Dependency
48
+ name: jalalidate
49
+ requirement: &21868180 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: *21868180
58
+ description: Change I18n localize to use parsi digits and jalaly dates in farsi locale
59
+ email: hsn.zamani@gmail.com
60
+ executables: []
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - .gitignore
65
+ - Gemfile
66
+ - README.markdown
67
+ - Rakefile
68
+ - init.rb
69
+ - lib/parsi_digits.rb
70
+ - lib/parsi_localize.rb
71
+ - lib/version.rb
72
+ - locale/en.yml
73
+ - locale/fa.yml
74
+ - parsi-localize.gemspec
75
+ - test/parsi_digits_test.rb
76
+ - test/test_helper.rb
77
+ homepage: http://github.com/hzamani/parsi_localize
78
+ licenses: []
79
+ post_install_message:
80
+ rdoc_options: []
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 1.8.10
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: Change I18n localize to use parsi digits and jalaly dates in farsi locale
101
+ test_files:
102
+ - test/parsi_digits_test.rb
103
+ - test/test_helper.rb