bongabdo 0.0.3

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,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+
3
+ # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
+ # development environment upon cd'ing into the directory
5
+
6
+ # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
7
+ environment_id="ruby-1.9.2-p180@bongabdo"
8
+
9
+ #
10
+ # First we attempt to load the desired environment directly from the environment
11
+ # file. This is very fast and efficicent compared to running through the entire
12
+ # CLI and selector. If you want feedback on which environment was used then
13
+ # insert the word 'use' after --create as this triggers verbose mode.
14
+ #
15
+ if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
16
+ && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] ; then
17
+ \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
18
+
19
+ [[ -s ".rvm/hooks/after_use" ]] && . ".rvm/hooks/after_use"
20
+ else
21
+ # If the environment file has not yet been created, use the RVM CLI to select.
22
+ rvm --create "$environment_id"
23
+ fi
24
+
25
+ #
26
+ # If you use an RVM gemset file to install a list of gems (*.gems), you can have
27
+ # it be automatically loaded. Uncomment the following and adjust the filename if
28
+ # necessary.
29
+ #
30
+ # filename=".gems"
31
+ # if [[ -s "$filename" ]] ; then
32
+ # rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
33
+ # fi
34
+
35
+ #
36
+ # If you use bundler and would like to run bundle each time you enter the
37
+ # directory, you can uncomment the following code.
38
+ #
39
+ # # Ensure that Bundler is installed. Install it if it is not.
40
+ # if ! command -v bundle >/dev/null; then
41
+ # printf "The rubygem 'bundler' is not installed. Installing it now.\n"
42
+ # gem install bundler
43
+ # fi
44
+ #
45
+ # # Bundle while reducing excess noise.
46
+ # printf "Bundling your gems. This may take a few minutes on a fresh clone.\n"
47
+ # bundle | grep -v '^Using ' | grep -v ' is complete' | sed '/^$/d'
48
+ #
49
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in bongabdo.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
data/bin/bongabdo ADDED
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+
4
+ begin
5
+ require 'bongabdo'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'bongabdo'
9
+ end
10
+
11
+
12
+ puts Bongabdo::Base.new(Time.now.to_date).long_format
data/bongabdo.gemspec ADDED
@@ -0,0 +1,18 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "bongabdo/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "bongabdo"
7
+ s.version = Bongabdo::VERSION
8
+ s.authors = ["Bratish Goswami"]
9
+ s.email = ["bratishgoswami@gmail.com"]
10
+ s.homepage = "https://github.com/bratish/bongabdo"
11
+ s.summary = %q{Bengali date provider module}
12
+ s.description = %q{Gregorian date to Bongabdo converter.}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+ end
data/lib/bongabdo.rb ADDED
@@ -0,0 +1,6 @@
1
+ # encoding: utf-8
2
+
3
+ require 'date'
4
+ require "bongabdo/version"
5
+ require "bongabdo/core_ext"
6
+ require "bongabdo/base"
@@ -0,0 +1,88 @@
1
+ # encoding: utf-8
2
+
3
+ module Bongabdo
4
+
5
+ MONTHS = [
6
+ {'bn' => "বৈশাখ", 'en' => "Boishakh"},
7
+ {'bn' => "জ্যৈষ্ঠ",'en' => "Joishtho"},
8
+ {'bn' => "আষাঢ়", 'en' => "Asharh"},
9
+ {'bn' => "শ্রাবণ", 'en' => "Srabon"},
10
+ {'bn' => "ভাদ্র", 'en' => "Bhadro"},
11
+ {'bn' => "আশ্বিন", 'en' => "Ashwin"},
12
+ {'bn' => "কার্তিক", 'en' => "Kartik"},
13
+ {'bn' => "অগ্রহায়ন", 'en' => "Agrohayon"},
14
+ {'bn' => "পৌষ", 'en' => "Poush"},
15
+ {'bn' => "মাঘ", 'en' => "Magh"},
16
+ {'bn' => "ফাল্গুন", 'en' => "Falgun"},
17
+ {'bn' => "চৈত্র", 'en' => "Chaitro"}
18
+ ]
19
+
20
+ class Base
21
+ attr_accessor :year, :month, :day
22
+
23
+ def initialize(d)
24
+ @day, @month, @year = calculate(d)
25
+ end
26
+
27
+ def month_name(num, lang='bn')
28
+ MONTHS[(num % 12) - 1][lang]
29
+ end
30
+
31
+ def self.today
32
+ self.new(Time.now.to_date)
33
+ end
34
+
35
+ def to_s(lang="bn")
36
+ return "#{@day}/#{@month}/#{@year}" if lang == "en"
37
+ "#{@day.to_bn}/#{@month.to_bn}/#{@year.to_bn}"
38
+ end
39
+
40
+ def long_format(lang="bn")
41
+ return "#{@day} #{month_name(@month, 'en')}, #{@year}" if lang == "en"
42
+ "#{@day.to_bn} #{month_name(@month)}, #{@year.to_bn}"
43
+ end
44
+
45
+
46
+ private
47
+ def calculate(inputdate)
48
+ days_to_add = [17, 18, 17, 17, 17, 17, 16, 16, 16, 15, 16, 16]
49
+ days_to_sub = [13, 12, 14, 13, 14, 14, 15, 15, 15, 15, 14, 14]
50
+ bn_month_day = [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 30]
51
+
52
+ bn_month_day[10] = 31 if inputdate.leap? #Falgun
53
+
54
+ #Calculating Bengali Year
55
+ bn_year = inputdate.year - 594
56
+
57
+ bn_year += 1 if inputdate.yday >= 104 # in case of leap year
58
+
59
+ #Calculating Month
60
+ bn_month = inputdate.month + 8
61
+ if inputdate.month > 4
62
+ bn_month = inputdate.month - 4
63
+ end
64
+
65
+ bn_date = inputdate.day + days_to_add[inputdate.month - 1]
66
+
67
+ if (bn_date > bn_month_day[bn_month-1])
68
+ bn_month += 1
69
+ if (bn_month > 12)
70
+ bn_month -= 12
71
+ end
72
+ bn_date = inputdate.day - days_to_sub[inputdate.month-1]
73
+ end
74
+
75
+ if (inputdate.day < 14 && inputdate.month == 3 && inputdate.leap?) #1st - 15 March of leap year
76
+ bn_date -= 1
77
+ end
78
+
79
+ if (inputdate.day == 14 && inputdate.month == 3 && inputdate.leap?) #14th March of Non Leap Year, trouble some
80
+ bn_date = 30
81
+ bn_month = 11
82
+ end
83
+
84
+ return bn_date, bn_month, bn_year
85
+ end
86
+ end
87
+ end
88
+
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+
3
+ class Fixnum
4
+
5
+ BENGALI_NUMBERS = ["০", "১", "২", "৩", "৪", "৫", "৬", "৭", "৮", "৯"]
6
+
7
+ def to_bn
8
+ bn = ""
9
+ self.to_s.each_byte {|b|bn += ((b > 47 && b < 58)? BENGALI_NUMBERS[b - 48] : b.chr) }
10
+ bn
11
+ end
12
+ end
13
+
@@ -0,0 +1,3 @@
1
+ module Bongabdo
2
+ VERSION = "0.0.3"
3
+ end
@@ -0,0 +1,35 @@
1
+ # encoding: utf-8
2
+
3
+ require 'test/unit'
4
+ require File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib", "bongabdo", "base")
5
+ require File.join(File.expand_path(File.dirname(__FILE__)), "..", "lib", "bongabdo", "core_ext")
6
+ require 'date'
7
+
8
+ class TestBongabdo < Test::Unit::TestCase
9
+ def test_it_sets_day
10
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).day, 21)
11
+ end
12
+
13
+ def test_it_sets_month
14
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).month, 10)
15
+ end
16
+
17
+ def test_it_sets_year
18
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).year, 1407)
19
+ end
20
+
21
+ def test_to_s
22
+ assert(Bongabdo::Base.new(Date.new(2001,2,3)), "২১/১০/১৪০৭")
23
+ end
24
+
25
+ def test_month_name
26
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).month_name(2), "জ্যৈষ্ঠ")
27
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).month_name(2, 'bn'), "জ্যৈষ্ঠ")
28
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).month_name(2, 'en'), "Joishtho")
29
+ end
30
+
31
+ def test_long_format
32
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).long_format, "২১ মাঘ, ১৪০৭")
33
+ assert_equal(Bongabdo::Base.new(Date.new(2001,2,3)).long_format('en'), "21 Magh, 1407")
34
+ end
35
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bongabdo
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.3
6
+ platform: ruby
7
+ authors:
8
+ - Bratish Goswami
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2012-03-15 00:00:00 +05:30
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description: Gregorian date to Bongabdo converter.
18
+ email:
19
+ - bratishgoswami@gmail.com
20
+ executables:
21
+ - bongabdo
22
+ extensions: []
23
+
24
+ extra_rdoc_files: []
25
+
26
+ files:
27
+ - .gitignore
28
+ - .rvmrc
29
+ - Gemfile
30
+ - Rakefile
31
+ - bin/bongabdo
32
+ - bongabdo.gemspec
33
+ - lib/bongabdo.rb
34
+ - lib/bongabdo/base.rb
35
+ - lib/bongabdo/core_ext.rb
36
+ - lib/bongabdo/version.rb
37
+ - test/bongabdo_test.rb
38
+ has_rdoc: true
39
+ homepage: https://github.com/bratish/bongabdo
40
+ licenses: []
41
+
42
+ post_install_message:
43
+ rdoc_options: []
44
+
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ none: false
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: "0"
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ requirements: []
60
+
61
+ rubyforge_project:
62
+ rubygems_version: 1.6.2
63
+ signing_key:
64
+ specification_version: 3
65
+ summary: Bengali date provider module
66
+ test_files:
67
+ - test/bongabdo_test.rb