Class: FileAnnotate::Annotator

Inherits:
Object
  • Object
show all
Defined in:
lib/file_annotate/annotator.rb

Overview

負責對檔案內容進行註解的處理

Class Method Summary collapse

Class Method Details

.annotate_allObject



6
7
8
9
10
11
12
13
14
# File 'lib/file_annotate/annotator.rb', line 6

def self.annotate_all
  each_rb_file do |file|
    lines = File.readlines(file)
    next if annotated?(lines, file)

    insert_annotation!(lines, file)
    File.write(file, lines.join)
  end
end

.annotated?(lines, file) ⇒ Boolean



31
32
33
# File 'lib/file_annotate/annotator.rb', line 31

def self.annotated?(lines, file)
  lines.first&.strip == annotation_text(file)
end

.annotation_text(file) ⇒ Object



27
28
29
# File 'lib/file_annotate/annotator.rb', line 27

def self.annotation_text(file)
  "# #{file}"
end

.each_rb_file(&block) ⇒ Object



23
24
25
# File 'lib/file_annotate/annotator.rb', line 23

def self.each_rb_file(&block)
  Dir.glob("**/*.rb").each(&block)
end

.insert_annotation!(lines, file) ⇒ Object



35
36
37
# File 'lib/file_annotate/annotator.rb', line 35

def self.insert_annotation!(lines, file)
  lines.unshift("#{annotation_text(file)}\n")
end

.remove_allObject



16
17
18
19
20
21
# File 'lib/file_annotate/annotator.rb', line 16

def self.remove_all
  each_rb_file do |file|
    lines = File.readlines(file)
    File.write(file, lines.join) if remove_annotation!(lines, file)
  end
end

.remove_annotation!(lines, file) ⇒ Object



39
40
41
42
43
44
45
46
# File 'lib/file_annotate/annotator.rb', line 39

def self.remove_annotation!(lines, file)
  if annotated?(lines, file)
    lines.delete_at(0)
    true
  else
    false
  end
end