caseninja 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4e6a96a58e2541025b9a362f3afae008e35da385
4
+ data.tar.gz: 86082e022334d2fffe6d6edef43cb43bb5424f06
5
+ SHA512:
6
+ metadata.gz: 0deb50187f567539a659896a8db6efe1aab12e906b9da1f876860ca5078f5086832de3a6f8e22fd8674acacc41c3356a34023538c2858c9859838fbaaf1cf242
7
+ data.tar.gz: 4f589ab249fc7b0f506f81c534d46cde7db81e6cf509f9509f5f35a505205dd68cf2ff601a1535233eabdb61e601a45b934312709d9bdfb0b6f58ff856709136
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.2.0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in caseninja.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 ongaeshi
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,81 @@
1
+ # Caseninja
2
+
3
+ Caseninja converts input text to chain, snake, camel and pascal case. It will freely convert any text to any case.
4
+
5
+ ## Installation
6
+
7
+ ```ruby
8
+ $ gem install caseninja
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```
14
+ $ caseninja
15
+ Usage: caseninja [options] args
16
+ --chain Convert to chain case
17
+ --snake Convert to snake case
18
+ --camel Convert to camel case
19
+ --pascal Convert to pascal case
20
+ --upchain Convert to upper chain case
21
+ --upsnake Convert to upper snake case
22
+ ```
23
+
24
+ Convert the entered text to the chain, snake, camel, pascal, uppercase chain and uppercase snake.
25
+
26
+ ```
27
+ $ caseninja "hello world"
28
+ hello-world # chain
29
+ hello_world # snake
30
+ helloWorld # camel
31
+ HelloWorld # pascal
32
+ HELLO-WORLD # upchain
33
+ HELLO_WORLD # upsnake
34
+ ```
35
+
36
+ You can enter all the case.
37
+
38
+ ```
39
+ $ caseninja fooBarToBaz
40
+ foo-bar-to-baz
41
+ foo_bar_to_baz
42
+ fooBarToBaz
43
+ FooBarToBaz
44
+ FOO-BAR-TO-BAZ
45
+ FOO_BAR_TO_BAZ
46
+
47
+ $ caseninja foo-bar-to-baz
48
+ foo-bar-to-baz
49
+ foo_bar_to_baz
50
+ fooBarToBaz
51
+ FooBarToBaz
52
+ FOO-BAR-TO-BAZ
53
+ FOO_BAR_TO_BAZ
54
+ ```
55
+
56
+ Convert to snake case.
57
+
58
+ ```
59
+ $ caseninja fooBarToBaz --snake
60
+ foo_bar_to_baz
61
+ ```
62
+
63
+ Convert to snake and pascal case.
64
+
65
+ ```
66
+ $ caseninja fooBarToBaz -s -p
67
+ foo_bar_to_baz
68
+ FooBarToBaz
69
+ ```
70
+
71
+ You can also pass the sentence.
72
+
73
+ ```
74
+ $ caseninja "What does the Japanese word Dattebayo mean?"
75
+ what-does-the-japanese-word-dattebayo-mean?
76
+ what_does_the_japanese_word_dattebayo_mean?
77
+ whatDoesTheJapaneseWordDattebayoMean?
78
+ WhatDoesTheJapaneseWordDattebayoMean?
79
+ WHAT-DOES-THE-JAPANESE-WORD-DATTEBAYO-MEAN?
80
+ WHAT_DOES_THE_JAPANESE_WORD_DATTEBAYO_MEAN?
81
+ ```
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ end
7
+
8
+ task :default => :test
9
+
data/bin/caseninja ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'caseninja'
4
+ require 'optparse'
5
+
6
+ Version = Caseninja::VERSION
7
+
8
+ opts = {}
9
+
10
+ ARGV.options do |o|
11
+ o.banner = "Usage: caseninja [options] args"
12
+
13
+ o.on("--chain", "Convert to chain case") { opts[:chain] = true }
14
+ o.on("--snake", "Convert to snake case") { opts[:snake] = true }
15
+ o.on("--camel", "Convert to camel case") { opts[:camel] = true }
16
+ o.on("--pascal", "Convert to pascal case") { opts[:pascal] = true }
17
+ o.on("--upchain", "Convert to upper chain case") { opts[:upchain] = true }
18
+ o.on("--upsnake", "Convert to upper snake case") { opts[:upsnake] = true }
19
+
20
+ o.parse!
21
+ end
22
+
23
+ if ARGV.count == 0
24
+ puts ARGV.options.help
25
+ else
26
+ ARGV.each do |text|
27
+ if opts.empty?
28
+ puts Caseninja.to_hash(text).values
29
+ else
30
+ puts Caseninja.to_chain(text) if opts[:chain]
31
+ puts Caseninja.to_snake(text) if opts[:snake]
32
+ puts Caseninja.to_pascal(text) if opts[:pascal]
33
+ puts Caseninja.to_camel(text) if opts[:camel]
34
+ puts Caseninja.to_upchain(text) if opts[:upchain]
35
+ puts Caseninja.to_upsnake(text) if opts[:upsnake]
36
+ end
37
+ end
38
+ end
39
+
40
+
data/caseninja.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'caseninja/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "caseninja"
8
+ spec.version = Caseninja::VERSION
9
+ spec.authors = ["ongaeshi"]
10
+ spec.email = ["ongaeshi0621@gmail.com"]
11
+ spec.summary = %q{Convert input text to chain, snake, camel and pascal case.}
12
+ spec.description = %q{Caseninja converts input text to chain, snake, camel and pascal case. It will freely convert any text to any case.}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "minitest"
24
+ end
data/lib/caseninja.rb ADDED
@@ -0,0 +1,53 @@
1
+ require "caseninja/version"
2
+
3
+ module Caseninja
4
+ module_function
5
+
6
+ def to_hash(text)
7
+ {
8
+ chain: to_chain(text),
9
+ snake: to_snake(text),
10
+ camel: to_camel(text),
11
+ pascal: to_pascal(text),
12
+ upchain: to_upchain(text),
13
+ upsnake: to_upsnake(text),
14
+ }
15
+ end
16
+
17
+ def to_chain(text)
18
+ normalize(text).gsub(" ", "-")
19
+ end
20
+
21
+ def to_snake(text)
22
+ normalize(text).gsub(" ", "_")
23
+ end
24
+
25
+ def to_camel(text)
26
+ to_pascal(text).sub(/./) { $&.downcase }
27
+ end
28
+
29
+ def to_pascal(text)
30
+ normalize(text).split.map { |e| e.capitalize }.join
31
+ end
32
+
33
+ def to_upchain(text)
34
+ to_chain(text).upcase
35
+ end
36
+
37
+ def to_upsnake(text)
38
+ to_snake(text).upcase
39
+ end
40
+
41
+ def normalize(text)
42
+ if text =~ / /
43
+ text.downcase
44
+ elsif text =~ /-/
45
+ text.gsub("-", " ").downcase
46
+ elsif text =~ /_/
47
+ text.gsub("_", " ").downcase
48
+ else
49
+ text.split(/(?=[A-Z])/).join(" ").downcase
50
+ end
51
+ end
52
+
53
+ end
@@ -0,0 +1,3 @@
1
+ module Caseninja
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
+ require 'caseninja'
3
+
4
+ require 'minitest/autorun'
@@ -0,0 +1,45 @@
1
+ require 'minitest_helper'
2
+
3
+ class TestCaseninja < MiniTest::Test
4
+ def test_that_it_has_a_version_number
5
+ refute_nil ::Caseninja::VERSION
6
+ end
7
+
8
+ def test_to_hash
9
+ assert_equal(
10
+ {
11
+ chain: "hello-world",
12
+ snake: "hello_world",
13
+ camel: "helloWorld",
14
+ pascal: "HelloWorld",
15
+ upchain: "HELLO-WORLD",
16
+ upsnake: "HELLO_WORLD",
17
+ },
18
+ Caseninja.to_hash("hello world")
19
+ )
20
+
21
+ assert_equal(
22
+ {
23
+ chain: "caseninja-converts-input-text-to-chain-case",
24
+ snake: "caseninja_converts_input_text_to_chain_case",
25
+ camel: "caseninjaConvertsInputTextToChainCase",
26
+ pascal: "CaseninjaConvertsInputTextToChainCase",
27
+ upchain: "CASENINJA-CONVERTS-INPUT-TEXT-TO-CHAIN-CASE",
28
+ upsnake: "CASENINJA_CONVERTS_INPUT_TEXT_TO_CHAIN_CASE",
29
+ },
30
+ Caseninja.to_hash("Caseninja converts input text to chain case")
31
+ )
32
+ end
33
+
34
+ def test_normlize
35
+ assert_equal "hello world", Caseninja.normalize("hello world")
36
+ assert_equal "hello world", Caseninja.normalize("Hello world")
37
+ assert_equal "hello world", Caseninja.normalize("hello-world")
38
+ assert_equal "hello world", Caseninja.normalize("hello_world")
39
+ assert_equal "hello world", Caseninja.normalize("helloWorld")
40
+ assert_equal "hello world", Caseninja.normalize("HelloWorld")
41
+ assert_equal "hello world", Caseninja.normalize("HELLO-WORLD")
42
+ assert_equal "hello world", Caseninja.normalize("HELLO_WORLD")
43
+ assert_equal "hello world", Caseninja.normalize("HELLO_world")
44
+ end
45
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: caseninja
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - ongaeshi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-08-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Caseninja converts input text to chain, snake, camel and pascal case.
56
+ It will freely convert any text to any case.
57
+ email:
58
+ - ongaeshi0621@gmail.com
59
+ executables:
60
+ - caseninja
61
+ extensions: []
62
+ extra_rdoc_files: []
63
+ files:
64
+ - ".gitignore"
65
+ - ".travis.yml"
66
+ - Gemfile
67
+ - LICENSE.txt
68
+ - README.md
69
+ - Rakefile
70
+ - bin/caseninja
71
+ - caseninja.gemspec
72
+ - lib/caseninja.rb
73
+ - lib/caseninja/version.rb
74
+ - test/minitest_helper.rb
75
+ - test/test_caseninja.rb
76
+ homepage: ''
77
+ licenses:
78
+ - MIT
79
+ metadata: {}
80
+ post_install_message:
81
+ rdoc_options: []
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ requirements: []
95
+ rubyforge_project:
96
+ rubygems_version: 2.4.5
97
+ signing_key:
98
+ specification_version: 4
99
+ summary: Convert input text to chain, snake, camel and pascal case.
100
+ test_files:
101
+ - test/minitest_helper.rb
102
+ - test/test_caseninja.rb