revepast 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjY2NWZhOTQ3ZmRiYWYyMDkyNTllZjRmNTU3ZWE2ZjhkYjgwOWU2Zg==
4
+ YTBiM2I4NjdiNjIzZThjOGQ1ODc1Njc0MDJkZDRlYTcwZjA3YWI4Zg==
5
5
  data.tar.gz: !binary |-
6
- NWFmZGFiN2VlZWRhNmNlZTIyZjM2MmQ5ZmNhZjg5ZDMwYjVhNjFlYg==
6
+ OTA3N2FhMmNkOGVlZGI4MDQzZDYyNmRmZThmOGM2YmMxMDJiMTZkNw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- M2MzM2IxMzFlYjA1MTE1ODdmYjMwODBhMTlmY2UyMDYxMmMwZTVmOGE3ZDY5
10
- ZGM1NmNlYzgzODRmMmY4MWRlOTkyZTFlNTg0NjE3MzY5MTE1MzlmN2RiOTlk
11
- M2Q2ZTk0MWFkMDhjNjE4YzQ2NjQ5MDAwZmQyNGNiOTRkMmQ1YjA=
9
+ MWQ0OWMwMGZlYjk0OTdjYjVkMWMzNGQ4NGVkZmEyNTgyYTAzNDc0Y2RjN2Vh
10
+ MDA3ZDAwYjM0ZGZkYjBmZGNjN2U5MGM2ZmQyYTNjZmQ5MTJlOTQxMzI5ZWVm
11
+ NDc2MTA5OTE0NDI3MzMxNGYzZDVlNTJhZDQyZWRhMTUzMzFkMWY=
12
12
  data.tar.gz: !binary |-
13
- Mzc0MGVkNTcyOTRjNDcyNzBhYjlmMjVkY2FlNzcwNjA2OGQ4NWZiMWY3MWFm
14
- OTE3MDU5MzMyYWQyZmQ5OTA5NTJmZWJmN2VjZTZiZGExNzE2MWZkMDhiNTM5
15
- M2RiMTUwNDUwMTNlYWQxYzFjNmRkNWUwNTE5ZTJjYmYyNDlhY2Y=
13
+ NTQzOTIyNzA5ZmQ0ZDUzMWIyNzc3ZjYwNTYwMGJmOTJiYzIzZDVmNGRiOWVj
14
+ YWIzMzBiNzc1NjdmMGIzNWFiN2ExYmY2NmRjMTkzOTA4OTA2NGEzNzk0YWU1
15
+ ZTIxYWJlYTEzZWY3YTljNzhiOWNlYTgyODk2MWYzM2QyYzhiYzI=
data/Gemfile CHANGED
@@ -6,6 +6,7 @@ gem 'rake'
6
6
  group :development do
7
7
  gem 'pry'
8
8
  gem 'awesome_print'
9
+ gem 'json'
9
10
  end
10
11
 
11
12
  group :test do
data/README.md CHANGED
@@ -1,9 +1,11 @@
1
+ [![Gem Version](https://badge.fury.io/rb/revepast.png)](http://badge.fury.io/rb/revepast)
1
2
  [![Coverage Status](https://coveralls.io/repos/Mekaret/revepast/badge.svg?branch=master&service=github)](https://coveralls.io/github/Mekaret/revepast?branch=master)
2
3
  [![Build Status](https://travis-ci.org/Mekaret/revepast.svg?branch=master)](https://travis-ci.org/Mekaret/revepast)
3
4
 
4
5
  # Revepast
5
6
 
6
7
  A ruby library to help parse various things that are copy/pastable from the Eve Online UI.
8
+ Largely inspired from [Evepaste](https://github.com/evepraisal/evepaste).
7
9
 
8
10
  This is currently a **work in progress**.
9
11
 
@@ -0,0 +1,9 @@
1
+ module Revepast
2
+ class Unparsable < StandardError
3
+ attr_reader :object
4
+
5
+ def initialize(object)
6
+ @object = object
7
+ end
8
+ end
9
+ end
@@ -1,14 +1,21 @@
1
1
  module Revepast
2
2
  module Parser
3
3
  class CargoScan
4
- def initialize(str)
5
- @Utils = Utils.new
6
- @str = @Utils.sanitize(str)
7
- parse
4
+ autoload :Utils, 'revepast/parser'
5
+ include Revepast::Parser
6
+
7
+ attr_reader :result, :bad_lines
8
+
9
+ def initialize
10
+ @Utils = Utils.new
11
+ @result = {}
12
+ @bad_lines = []
13
+ result = parse
8
14
  end
9
15
 
10
16
  def parse
11
- p "wa are in CargoScan"
17
+ lines = @Utils.sanitize(Revepast.str)
18
+ @result, @bad_lines = @Utils.parse_listing(lines)
12
19
  end
13
20
  end
14
21
  end
@@ -6,14 +6,14 @@ module Revepast
6
6
 
7
7
  attr_reader :result, :bad_lines
8
8
 
9
- def initialize(str)
9
+ def initialize
10
10
  @Utils = Utils.new
11
11
  @result = {}
12
12
  @bad_lines = []
13
- result = parse(@Utils.sanitize(str))
13
+ result = parse
14
14
  end
15
15
 
16
- def parse(str)
16
+ def parse
17
17
  ammo_pattern = /^([\S ]+), ?([\S ]+)$/
18
18
  blacklist = ['[empty high slot]',
19
19
  '[empty low slot]',
@@ -21,13 +21,22 @@ module Revepast
21
21
  '[empty rig slot]',
22
22
  '[empty subsystem slot]']
23
23
 
24
- if str.lines.first =~ /^(\[).*(\])$/
25
- ship = str.lines.first.match(ammo_pattern)[1].tr('[]', '')
26
- fit_name = str.lines.first.match(ammo_pattern)[2].tr('[]', '')
27
- else
28
- puts "Invalid EFT title line"
24
+ sanitize = @Utils.sanitize(Revepast.str)
25
+ lines = []
26
+ sanitize.each do |line|
27
+ unless blacklist.include? line.downcase
28
+ lines << line
29
+ end
30
+ end
31
+
32
+ begin
33
+ lines.first =~ /^(\[).*(\])$/
34
+ ship = lines.first.match(ammo_pattern)[1].tr('[]', '')
35
+ fit_name = lines.first.match(ammo_pattern)[2].tr('[]', '')
36
+ rescue
37
+ raise Unparsable.new("Invalid EFT title line")
29
38
  end
30
- matches, bad_lines = @Utils.regex_match_lines(ammo_pattern, str.lines[1..-1])
39
+ matches, bad_lines = @Utils.regex_match_lines(ammo_pattern, lines[1..-1])
31
40
  matches2, bad_lines2 = @Utils.parse_listing(bad_lines)
32
41
 
33
42
  @bad_lines = bad_lines2
@@ -1,8 +1,17 @@
1
1
  module Revepast
2
2
  module Parser
3
+ require "revepast/parser/eft"
4
+ require "revepast/parser/cargo_scan"
3
5
  class Utils
4
6
  def sanitize(str)
5
- return str.gsub /^$\n/, ''
7
+ result = []
8
+ str.each_line do |line|
9
+ line = line.chomp.gsub /^$\n/, ''
10
+ unless line.nil? || line == ""
11
+ result << line
12
+ end
13
+ end
14
+ return result
6
15
  end
7
16
 
8
17
  def regex_match_lines(regex, lines)
@@ -10,10 +19,8 @@ module Revepast
10
19
  bad_lines = Array.new
11
20
  lines.each do |line|
12
21
  if line.match(regex)
13
- # p "--#{line.chomp}"
14
22
  a = line.match(regex)
15
23
  matches.push(a.captures)
16
- # p matches
17
24
  else
18
25
  bad_lines.push(line.chomp)
19
26
  end
@@ -34,7 +41,7 @@ module Revepast
34
41
  matches3, bad_lines3 = regex_match_lines(listing_re3, bad_lines2)
35
42
 
36
43
  items = Hash.new { |h, k| h[k] = 0 }
37
- matches.each do |name, count|
44
+ matches.each do |count, name|
38
45
  items[name.strip] += count.to_i
39
46
  end
40
47
  matches2.each do |name, count|
@@ -1,3 +1,3 @@
1
1
  module Revepast
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/revepast.rb CHANGED
@@ -1,32 +1,29 @@
1
1
  require "revepast/version"
2
+ require "revepast/exceptions"
3
+ require "revepast/parser"
2
4
 
3
5
  module Revepast
4
- class Error < StandardError
5
- end
6
-
7
- module Parser
8
- autoload :Parser, 'revepast/parser'
9
- end
10
-
11
- class Sort
12
- autoload :EFT, 'revepast/parser/eft'
13
- include Revepast::Parser
14
-
15
- attr_reader :result, :bad_lines
16
-
17
- def initialize(str)
18
- eft_parse = EFT.new(str)
19
- @result = eft_parse.result
20
- @bad_lines = eft_parse.bad_lines
21
- end
22
- end
6
+ class << self; attr_accessor :str; end
23
7
 
24
8
  class Parse
25
9
  attr_reader :result
26
10
  def initialize (str)
27
- @result = Revepast::Sort.new(str)
28
- p result.result
29
- p result.bad_lines
11
+ Revepast.str = str
12
+ parser_table = [ "EFT", "CargoScan" ]
13
+ parser_table.each do |classname|
14
+ begin
15
+ parse = Object.const_get("Revepast::Parser").const_get(classname).new
16
+ if parse then
17
+ result = parse.result
18
+ bad_lines = parse.bad_lines
19
+ @result = [classname, result, bad_lines]
20
+ return
21
+ end
22
+ rescue Unparsable
23
+
24
+ end
25
+ end
26
+ raise Unparsable.new("No valid parser found for the givin text.")
30
27
  end
31
28
  end
32
29
 
data/revepast.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = "A Ruby library to help parse various things that are copy/pastable from the Eve Online"
13
13
  spec.description = "Ruby library to help parse various things that are copy/pastable from the Eve Online"
14
- spec.homepage = ""
14
+ spec.homepage = "https://github.com/Mekaret/revepast"
15
15
  spec.license = "MIT"
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: revepast
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mekaret Eriker
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-11 00:00:00.000000000 Z
11
+ date: 2015-08-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Ruby library to help parse various things that are copy/pastable from
14
14
  the Eve Online
@@ -25,13 +25,13 @@ files:
25
25
  - README.md
26
26
  - Rakefile
27
27
  - lib/revepast.rb
28
+ - lib/revepast/exceptions.rb
28
29
  - lib/revepast/parser.rb
29
30
  - lib/revepast/parser/cargo_scan.rb
30
31
  - lib/revepast/parser/eft.rb
31
- - lib/revepast/parser/test.rb
32
32
  - lib/revepast/version.rb
33
33
  - revepast.gemspec
34
- homepage: ''
34
+ homepage: https://github.com/Mekaret/revepast
35
35
  licenses:
36
36
  - MIT
37
37
  metadata:
@@ -1,21 +0,0 @@
1
- # /usr/bin/ruby
2
-
3
- input = {
4
- "425mm AutoCannon II, Republic Fleet EMP M" => 3
5
- }
6
-
7
- expected_output = [
8
- {
9
- name: "425mm AutoCannon II",
10
- ammo: "Republic Fleet EMP M",
11
- quantity: 3
12
- }
13
- ]
14
-
15
- output = input.inject([]) do |memo, (key, quantity)|
16
- name, ammo = key.split(",")
17
- memo << { name: name.strip, ammo: ammo.strip, quantity: quantity }
18
- p memo
19
- end
20
-
21
- raise "don't match" if output != expected_output