siatra 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.
@@ -0,0 +1,20 @@
1
+ # Siatra: reversed art'izing tool
2
+
3
+ Art + ize `->` Artize `->` Artais `->` Siatra (reversed)
4
+
5
+ To convert your artistic code to non-artistic code.
6
+
7
+ ## Install
8
+
9
+ gem install siatra
10
+
11
+ ## Usage
12
+
13
+ $ siatra -h
14
+ $ siatra -v
15
+ $ siatra {filename}
16
+
17
+ or
18
+
19
+ require 'siatra'
20
+ p Siatra File.read '{filename}'
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ require 'pathname'
3
+ $: << 'lib'
4
+ require 'siatra'
5
+ case ARGV[0]
6
+ when '-h', '--help'
7
+ puts Siatra.help
8
+ when '-v', '--version'
9
+ puts Siatra::VERSION
10
+ else
11
+ abort 'no filename given' unless ARGV[0]
12
+ filename = Pathname(ARGV.shift).expand_path
13
+ puts Siatra filename.read
14
+ end
15
+ # vim: set ft=ruby :
@@ -0,0 +1,33 @@
1
+ require 'strscan'
2
+
3
+ module Siatra
4
+ VERSION = '0.1'
5
+
6
+ class << self
7
+ def help
8
+ puts " siatra -v shows version number"
9
+ puts " siatra -h shows this message"
10
+ puts " siatra {filename} shows de-artized content of the file"
11
+ end
12
+ end
13
+ end
14
+
15
+ def Siatra(code)
16
+ s = StringScanner.new(code)
17
+ memo = []
18
+ is = {shebanged: false}
19
+ until s.eos?
20
+ case
21
+ when !is[:shebanged] && s.scan(/^#!.*\n/)
22
+ memo << s[0]
23
+ is[:shebanged] = true
24
+ when s.scan(/\r?\n/m)
25
+ memo << ';'
26
+ when s.scan(/./)
27
+ memo << s[0]
28
+ else
29
+ raise 'must not happen'
30
+ end
31
+ end
32
+ memo.join
33
+ end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../lib/siatra', __FILE__)
2
+ Gem::Specification.new do |s|
3
+ s.name = %q{siatra}
4
+ s.version = Siatra::VERSION.dup
5
+ s.date = Time.now.strftime('%Y-%m-%d')
6
+
7
+ s.summary = %q{Siatra: reversed art'izing tool}
8
+ s.description = %q{To convert your artistic code to non-artistic code.}
9
+
10
+ s.author = 'ujihisa'
11
+ s.email = %q{ujihisa at gmail.com}
12
+
13
+ s.files =
14
+ Dir['lib/**/*'] +
15
+ Dir['bin/**/*'] +
16
+ Dir['spec/**/*'] +
17
+ %w{ siatra.gemspec README.md }
18
+
19
+ s.require_paths = ["lib"]
20
+ s.executables = ['siatra']
21
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
22
+
23
+ s.homepage = %q{https://github.com/ujihisa/siatra}
24
+
25
+ s.extra_rdoc_files = %w< README.md >
26
+
27
+ #s.add_development_dependency('rake')
28
+ s.add_development_dependency('rspec')
29
+ end
@@ -0,0 +1,30 @@
1
+ require_relative '../lib/siatra'
2
+ require 'open3'
3
+
4
+ describe 'Siatra' do
5
+ context '()' do
6
+ it 'converts linefeeds to semicolons' do
7
+ Siatra("this\nis\na\npen.").should == 'this;is;a;pen.'
8
+ end
9
+
10
+ it "doesn't convert shebang line" do
11
+ Siatra("#!a\nis\na\npen.").should == "#!a\nis;a;pen."
12
+ end
13
+ end
14
+ end
15
+
16
+ describe '/bin/siatra' do
17
+ context '-h' do
18
+ it 'shows help message' do
19
+ x, _ = Open3.capture2e('./bin/siatra -h')
20
+ x.should =~ /shows this message/
21
+ end
22
+ end
23
+
24
+ context '-v' do
25
+ it 'shows version' do
26
+ x, _ = Open3.capture2e('./bin/siatra -v')
27
+ x.should =~ /\d\.\d/
28
+ end
29
+ end
30
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: siatra
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ version: "0.1"
9
+ platform: ruby
10
+ authors:
11
+ - ujihisa
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2011-03-29 00:00:00 -07:00
17
+ default_executable:
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: rspec
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ type: :development
31
+ version_requirements: *id001
32
+ description: To convert your artistic code to non-artistic code.
33
+ email: ujihisa at gmail.com
34
+ executables:
35
+ - siatra
36
+ extensions: []
37
+
38
+ extra_rdoc_files:
39
+ - README.md
40
+ files:
41
+ - lib/siatra.rb
42
+ - bin/siatra
43
+ - spec/siatra_spec.rb
44
+ - siatra.gemspec
45
+ - README.md
46
+ has_rdoc: true
47
+ homepage: https://github.com/ujihisa/siatra
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
+ segments:
61
+ - 0
62
+ version: "0"
63
+ required_rubygems_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ segments:
69
+ - 0
70
+ version: "0"
71
+ requirements: []
72
+
73
+ rubyforge_project:
74
+ rubygems_version: 1.3.7
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: "Siatra: reversed art'izing tool"
78
+ test_files: []
79
+