flog 3.0.0.b2 → 3.0.0.b3
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.tar.gz.sig +0 -0
- data/History.txt +9 -0
- data/lib/flog.rb +22 -8
- data/test/test_flog.rb +51 -0
- metadata +12 -12
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
=== 3.0.0.b3 / 2012-10-22
|
2
|
+
|
3
|
+
* 4 minor enhancements:
|
4
|
+
|
5
|
+
* Added .rake as a supported extension.
|
6
|
+
* Create a new parser for every file, preventing state barkification
|
7
|
+
* Extended DSL support to include hash args (eg task :blah => :dep).
|
8
|
+
* Extended DSL support to report nested names (eg namespace(blah)::task#woot)
|
9
|
+
|
1
10
|
=== 3.0.0.b2 / 2012-08-07
|
2
11
|
|
3
12
|
* 1 bug fix:
|
data/lib/flog.rb
CHANGED
@@ -12,7 +12,7 @@ class File
|
|
12
12
|
end
|
13
13
|
|
14
14
|
class Flog < SexpProcessor
|
15
|
-
VERSION = '3.0.0.
|
15
|
+
VERSION = '3.0.0.b3'
|
16
16
|
|
17
17
|
THRESHOLD = 0.60
|
18
18
|
SCORES = Hash.new 1
|
@@ -118,7 +118,7 @@ class Flog < SexpProcessor
|
|
118
118
|
|
119
119
|
# REFACTOR: from flay
|
120
120
|
def self.expand_dirs_to_files *dirs
|
121
|
-
extensions = [
|
121
|
+
extensions = %w[rb rake]
|
122
122
|
|
123
123
|
dirs.flatten.map { |p|
|
124
124
|
if File.directory? p then
|
@@ -255,6 +255,7 @@ class Flog < SexpProcessor
|
|
255
255
|
ruby = file == '-' ? $stdin.read : File.binread(file)
|
256
256
|
warn "** flogging #{file}" if option[:verbose]
|
257
257
|
|
258
|
+
@parser = option[:parser].new
|
258
259
|
ast = @parser.process(ruby, file)
|
259
260
|
next unless ast
|
260
261
|
mass[file] = ast.mass
|
@@ -317,7 +318,7 @@ class Flog < SexpProcessor
|
|
317
318
|
@method_stack = []
|
318
319
|
@method_locations = {}
|
319
320
|
@mass = {}
|
320
|
-
@parser =
|
321
|
+
@parser = nil
|
321
322
|
self.auto_shift_type = true
|
322
323
|
self.reset
|
323
324
|
end
|
@@ -332,7 +333,7 @@ class Flog < SexpProcessor
|
|
332
333
|
if Sexp === name then
|
333
334
|
raise "you shouldn't see me"
|
334
335
|
elsif @class_stack.any?
|
335
|
-
@class_stack.reverse.join("::")
|
336
|
+
@class_stack.reverse.join("::").sub(/\([^\)]+\)$/, '')
|
336
337
|
else
|
337
338
|
@@no_class
|
338
339
|
end
|
@@ -637,6 +638,15 @@ class Flog < SexpProcessor
|
|
637
638
|
s()
|
638
639
|
end
|
639
640
|
|
641
|
+
def dsl_name? args
|
642
|
+
return false unless args and not args.empty?
|
643
|
+
|
644
|
+
first_arg = args.first
|
645
|
+
first_arg = first_arg[1] if first_arg[0] == :hash
|
646
|
+
|
647
|
+
[:lit, :str].include? first_arg[0] and first_arg[1]
|
648
|
+
end
|
649
|
+
|
640
650
|
def process_iter(exp)
|
641
651
|
context = (self.context - [:class, :module, :scope])
|
642
652
|
context = context.uniq.sort_by { |s| s.to_s }
|
@@ -646,10 +656,14 @@ class Flog < SexpProcessor
|
|
646
656
|
|
647
657
|
# DSL w/ names. eg task :name do ... end
|
648
658
|
# looks like s(:call, nil, :task, s(:lit, :name))
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
659
|
+
# or s(:call, nil, :task, s(:str, "name"))
|
660
|
+
# or s(:call, nil, :task, s(:hash, s(:lit, :name) ...))
|
661
|
+
|
662
|
+
t, r, m, *a = recv
|
663
|
+
|
664
|
+
if t == :call and r == nil and submsg = dsl_name?(a) then
|
665
|
+
m = "#{m}(#{submsg})" if m and [String, Symbol].include?(submsg.class)
|
666
|
+
in_klass m do # :task/namespace
|
653
667
|
in_method submsg, exp.file, exp.line do # :name
|
654
668
|
process_until_empty exp
|
655
669
|
end
|
data/test/test_flog.rb
CHANGED
@@ -458,6 +458,57 @@ class TestFlog < MiniTest::Unit::TestCase
|
|
458
458
|
util_process sexp, 2.0, :something => 1.0, :task => 1.0
|
459
459
|
end
|
460
460
|
|
461
|
+
def test_process_iter_dsl_hash
|
462
|
+
# task :woot => 42 do
|
463
|
+
# something
|
464
|
+
# end
|
465
|
+
|
466
|
+
sexp = s(:iter,
|
467
|
+
s(:call, nil, :task, s(:hash, s(:lit, :woot), s(:lit, 42))),
|
468
|
+
nil,
|
469
|
+
s(:call, nil, :something))
|
470
|
+
|
471
|
+
@klass, @meth = "task", "#woot"
|
472
|
+
|
473
|
+
util_process sexp, 2.3, :something => 1.0, :task => 1.0, :lit_fixnum => 0.3
|
474
|
+
end
|
475
|
+
|
476
|
+
def test_process_iter_dsl_namespaced
|
477
|
+
# namespace :blah do
|
478
|
+
# task :woot => 42 do
|
479
|
+
# something
|
480
|
+
# end
|
481
|
+
# end
|
482
|
+
|
483
|
+
sexp = s(:iter,
|
484
|
+
s(:call, nil, :namespace, s(:lit, :blah)),
|
485
|
+
nil,
|
486
|
+
s(:iter,
|
487
|
+
s(:call, nil, :task, s(:hash, s(:lit, :woot), s(:lit, 42))),
|
488
|
+
nil,
|
489
|
+
s(:call, nil, :something)))
|
490
|
+
|
491
|
+
@klass, @meth = "namespace(blah)::task", "woot"
|
492
|
+
|
493
|
+
score = 3.3
|
494
|
+
hash = {
|
495
|
+
"namespace(blah)::task#woot" => {
|
496
|
+
:something => 1.0,
|
497
|
+
:lit_fixnum => 0.3,
|
498
|
+
:task => 1.0,
|
499
|
+
},
|
500
|
+
"namespace#blah" => {
|
501
|
+
:namespace => 1.0,
|
502
|
+
},
|
503
|
+
}
|
504
|
+
|
505
|
+
setup
|
506
|
+
@flog.process sexp
|
507
|
+
|
508
|
+
assert_equal hash, @flog.calls
|
509
|
+
assert_in_delta score, @flog.total
|
510
|
+
end
|
511
|
+
|
461
512
|
def test_process_lit
|
462
513
|
sexp = s(:lit, :y)
|
463
514
|
util_process sexp, 0.0
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -
|
4
|
+
hash: -2106459430
|
5
5
|
prerelease: 6
|
6
6
|
segments:
|
7
7
|
- 3
|
8
8
|
- 0
|
9
9
|
- 0
|
10
10
|
- b
|
11
|
-
-
|
12
|
-
version: 3.0.0.
|
11
|
+
- 3
|
12
|
+
version: 3.0.0.b3
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Ryan Davis
|
@@ -38,7 +38,7 @@ cert_chain:
|
|
38
38
|
FBHgymkyj/AOSqKRIpXPhjC6
|
39
39
|
-----END CERTIFICATE-----
|
40
40
|
|
41
|
-
date: 2012-
|
41
|
+
date: 2012-10-22 00:00:00 Z
|
42
42
|
dependencies:
|
43
43
|
- !ruby/object:Gem::Dependency
|
44
44
|
name: sexp_processor
|
@@ -63,7 +63,7 @@ dependencies:
|
|
63
63
|
requirements:
|
64
64
|
- - ~>
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
hash: -
|
66
|
+
hash: -2106476332
|
67
67
|
segments:
|
68
68
|
- 3
|
69
69
|
- 0
|
@@ -81,11 +81,11 @@ dependencies:
|
|
81
81
|
requirements:
|
82
82
|
- - ~>
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
hash:
|
84
|
+
hash: 25
|
85
85
|
segments:
|
86
|
-
-
|
87
|
-
-
|
88
|
-
version: "
|
86
|
+
- 4
|
87
|
+
- 1
|
88
|
+
version: "4.1"
|
89
89
|
type: :development
|
90
90
|
version_requirements: *id003
|
91
91
|
- !ruby/object:Gem::Dependency
|
@@ -111,11 +111,11 @@ dependencies:
|
|
111
111
|
requirements:
|
112
112
|
- - ~>
|
113
113
|
- !ruby/object:Gem::Version
|
114
|
-
hash:
|
114
|
+
hash: 5
|
115
115
|
segments:
|
116
116
|
- 3
|
117
|
-
-
|
118
|
-
version: "3.
|
117
|
+
- 1
|
118
|
+
version: "3.1"
|
119
119
|
type: :development
|
120
120
|
version_requirements: *id005
|
121
121
|
description: |-
|
metadata.gz.sig
CHANGED
Binary file
|