classify 0.0.2

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rspec ADDED
@@ -0,0 +1,5 @@
1
+ --color
2
+ -fs
3
+ -Ilib
4
+ -Ispec
5
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in classify.gemspec
4
+ gemspec
@@ -0,0 +1,33 @@
1
+ # Classify
2
+
3
+ Converts strings into constants using Ruby.
4
+
5
+ Something similar to Rails' [classify](http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#method-i-classify) method.
6
+
7
+ ## How do use
8
+
9
+ require 'rubygems'
10
+ require 'classify'
11
+
12
+ >> class MyRandomString; end
13
+ >> Classify.it!("my_random_string")
14
+ => MyRandomString
15
+
16
+ ## How do install
17
+
18
+ [sudo] gem install classify
19
+
20
+ ## How to use it in a rails 3 project
21
+
22
+ Add `gem 'classify'` to your Gemfile and run `bundle`.
23
+
24
+ ## How to help
25
+
26
+ - Start by copying the project or make your own branch.
27
+ - Navigate to the root path of the project and run `bundle`.
28
+ - Start by running all tests using rspec, `rspec spec/classify_spec.rb`.
29
+ - Implement your own code, write some tests, commit and do a pull request.
30
+
31
+ ## Requirements
32
+
33
+ Classify is tested in OS X 10.6.6 using Ruby 1.8.7 and 1.9.2.
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "classify"
6
+ s.version = "0.0.2"
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Linus Oleander"]
9
+ s.email = ["linus@oleander.nu"]
10
+ s.homepage = "https://github.com/oleander/classify"
11
+ s.summary = %q{Converts strings into constants using Ruby}
12
+ s.description = %q{Converts strings into constants using Ruby. Something simular to Rails' classify method.}
13
+
14
+ s.rubyforge_project = "classify"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ s.add_development_dependency('rspec')
22
+ end
@@ -0,0 +1,18 @@
1
+ class Classify
2
+ def self.it!(string)
3
+ raise ArgumentError, "Wrong argument #{string.inspect}" if not string.class == String or string.match(/(^\_)|(\_$)|([^a-z0-9\_])/i)
4
+ Classify.new.camelize(string)
5
+ end
6
+
7
+ def try_converting(string)
8
+ unless /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/ =~ string
9
+ raise ArgumentError, "#{string} is not a valid constant name!"
10
+ end
11
+
12
+ Object.module_eval("::#{$1}", __FILE__, __LINE__)
13
+ end
14
+
15
+ def camelize(string)
16
+ self.try_converting(string.gsub(/^(.{1})|\_.{1}/) { |s| s.gsub(/[^a-z0-9]+/i, '').capitalize })
17
+ end
18
+ end
@@ -0,0 +1,33 @@
1
+ # encoding: UTF-8
2
+ require 'spec_helper'
3
+
4
+ module Therandomstring; end
5
+ module MyRandomString; end
6
+ module A1; end
7
+ module My1A; end
8
+
9
+ describe Classify do
10
+ it "should return a constant" do
11
+ Classify.it!("my_random_string").should eq(MyRandomString)
12
+ Classify.it!("a_1").should eq(A1)
13
+ Classify.it!("my_1_a").should eq(My1A)
14
+ end
15
+
16
+ it "should raise an error if the param contains non valid data" do
17
+ ["my::string", "_value_string", "my_string ", "string_ö_string", nil, Object, "", 1, "1_string", "string_", "_string_"].each do |string|
18
+ lambda {
19
+ Classify.it!(string)
20
+ }.should raise_error(ArgumentError)
21
+ end
22
+ end
23
+
24
+ it "should work without underscore" do
25
+ Classify.it!("therandomstring").should eq(Therandomstring)
26
+ end
27
+
28
+ it "should work on a half done string" do
29
+ ["my_randomString", "myRandomString", "MyRandomString", "My_Random_String"].each do |string|
30
+ Classify.it!(string).should eq(MyRandomString)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,6 @@
1
+ require 'rspec'
2
+ require 'classify'
3
+
4
+ RSpec.configure do |config|
5
+ config.mock_with :rspec
6
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: classify
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.2
6
+ platform: ruby
7
+ authors:
8
+ - Linus Oleander
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-02-18 00:00:00 +01:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rspec
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :development
26
+ version_requirements: *id001
27
+ description: Converts strings into constants using Ruby. Something simular to Rails' classify method.
28
+ email:
29
+ - linus@oleander.nu
30
+ executables: []
31
+
32
+ extensions: []
33
+
34
+ extra_rdoc_files: []
35
+
36
+ files:
37
+ - .gitignore
38
+ - .rspec
39
+ - Gemfile
40
+ - README.markdown
41
+ - Rakefile
42
+ - classify.gemspec
43
+ - lib/classify.rb
44
+ - spec/classify_spec.rb
45
+ - spec/spec_helper.rb
46
+ has_rdoc: true
47
+ homepage: https://github.com/oleander/classify
48
+ licenses: []
49
+
50
+ post_install_message:
51
+ rdoc_options: []
52
+
53
+ require_paths:
54
+ - lib
55
+ required_ruby_version: !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "0"
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ requirements: []
68
+
69
+ rubyforge_project: classify
70
+ rubygems_version: 1.5.0
71
+ signing_key:
72
+ specification_version: 3
73
+ summary: Converts strings into constants using Ruby
74
+ test_files:
75
+ - spec/classify_spec.rb
76
+ - spec/spec_helper.rb