vipergen-xctestable 0.2.9

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.
Files changed (88) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +157 -0
  4. data/bin/vipergen +9 -0
  5. data/lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.h +12 -0
  6. data/lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.m +10 -0
  7. data/lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.h +12 -0
  8. data/lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.m +10 -0
  9. data/lib/templates/default/objc/Interactor/VIPERInteractor.h +16 -0
  10. data/lib/templates/default/objc/Interactor/VIPERInteractor.m +10 -0
  11. data/lib/templates/default/objc/Interactor/VIPERItem.h +10 -0
  12. data/lib/templates/default/objc/Interactor/VIPERItem.m +10 -0
  13. data/lib/templates/default/objc/Presenter/VIPERPresenter.h +17 -0
  14. data/lib/templates/default/objc/Presenter/VIPERPresenter.m +11 -0
  15. data/lib/templates/default/objc/Protocols/VIPERProtocols.h +80 -0
  16. data/lib/templates/default/objc/View/VIPERView.h +13 -0
  17. data/lib/templates/default/objc/View/VIPERView.m +32 -0
  18. data/lib/templates/default/objc/WireFrame/VIPERWireFrame.h +18 -0
  19. data/lib/templates/default/objc/WireFrame/VIPERWireFrame.m +32 -0
  20. data/lib/templates/default/swift/DataManager/API/VIPERAPIDataManager.swift +11 -0
  21. data/lib/templates/default/swift/DataManager/Local/VIPERLocalDataManager.swift +11 -0
  22. data/lib/templates/default/swift/Interactor/VIPERInteractor.swift +15 -0
  23. data/lib/templates/default/swift/Interactor/VIPERItem.swift +13 -0
  24. data/lib/templates/default/swift/Presenter/VIPERPresenter.swift +15 -0
  25. data/lib/templates/default/swift/Protocols/VIPERProtocols.swift +70 -0
  26. data/lib/templates/default/swift/View/VIPERView.swift +12 -0
  27. data/lib/templates/default/swift/WireFrame/VIPERWireFrame.swift +29 -0
  28. data/lib/templates/default/viperspec.yml +4 -0
  29. data/lib/templates/testable/objc/DataManager/VIPERDataManager.h +15 -0
  30. data/lib/templates/testable/objc/DataManager/VIPERDataManager.m +11 -0
  31. data/lib/templates/testable/objc/Interactor/VIPERInteractor.h +16 -0
  32. data/lib/templates/testable/objc/Interactor/VIPERInteractor.m +10 -0
  33. data/lib/templates/testable/objc/Interactor/VIPERInteractorSpec.m +31 -0
  34. data/lib/templates/testable/objc/Presenter/VIPERPresenter.h +18 -0
  35. data/lib/templates/testable/objc/Presenter/VIPERPresenter.m +11 -0
  36. data/lib/templates/testable/objc/Presenter/VIPERPresenterSpec.m +31 -0
  37. data/lib/templates/testable/objc/Protocols/VIPERProtocols.h +64 -0
  38. data/lib/templates/testable/objc/ViewController/VIPERViewController.h +13 -0
  39. data/lib/templates/testable/objc/ViewController/VIPERViewController.m +32 -0
  40. data/lib/templates/testable/objc/ViewController/VIPERViewControllerSpec.m +31 -0
  41. data/lib/templates/testable/objc/WireFrame/VIPERWireFrame.h +19 -0
  42. data/lib/templates/testable/objc/WireFrame/VIPERWireFrame.m +31 -0
  43. data/lib/templates/testable/swift/DataManager/API/VIPERAPIDataManager.swift +11 -0
  44. data/lib/templates/testable/swift/DataManager/Local/VIPERLocalDataManager.swift +11 -0
  45. data/lib/templates/testable/swift/Interactor/VIPERInteractor.swift +15 -0
  46. data/lib/templates/testable/swift/Interactor/VIPERInteractorSpec.swift +22 -0
  47. data/lib/templates/testable/swift/Presenter/VIPERPresenter.swift +15 -0
  48. data/lib/templates/testable/swift/Presenter/VIPERPresenterSpec.swift +22 -0
  49. data/lib/templates/testable/swift/Protocols/VIPERProtocols.swift +70 -0
  50. data/lib/templates/testable/swift/View/VIPERView.swift +12 -0
  51. data/lib/templates/testable/swift/View/VIPERViewSpec.swift +22 -0
  52. data/lib/templates/testable/swift/WireFrame/VIPERWireFrame.swift +31 -0
  53. data/lib/templates/testable/viperspec.yml +4 -0
  54. data/lib/templates/xctestable/objc/DataManager/VIPERDataManager.h +15 -0
  55. data/lib/templates/xctestable/objc/DataManager/VIPERDataManager.m +11 -0
  56. data/lib/templates/xctestable/objc/Interactor/VIPERInteractor.h +16 -0
  57. data/lib/templates/xctestable/objc/Interactor/VIPERInteractor.m +10 -0
  58. data/lib/templates/xctestable/objc/Interactor/VIPERInteractorSpec.m +31 -0
  59. data/lib/templates/xctestable/objc/Presenter/VIPERPresenter.h +18 -0
  60. data/lib/templates/xctestable/objc/Presenter/VIPERPresenter.m +11 -0
  61. data/lib/templates/xctestable/objc/Presenter/VIPERPresenterSpec.m +31 -0
  62. data/lib/templates/xctestable/objc/Protocols/VIPERProtocols.h +64 -0
  63. data/lib/templates/xctestable/objc/ViewController/VIPERViewController.h +13 -0
  64. data/lib/templates/xctestable/objc/ViewController/VIPERViewController.m +32 -0
  65. data/lib/templates/xctestable/objc/ViewController/VIPERViewControllerSpec.m +31 -0
  66. data/lib/templates/xctestable/objc/WireFrame/VIPERWireFrame.h +19 -0
  67. data/lib/templates/xctestable/objc/WireFrame/VIPERWireFrame.m +31 -0
  68. data/lib/templates/xctestable/swift/DataManager/API/VIPERAPIDataManager.swift +11 -0
  69. data/lib/templates/xctestable/swift/DataManager/Local/VIPERLocalDataManager.swift +11 -0
  70. data/lib/templates/xctestable/swift/Interactor/VIPERInteractor.swift +15 -0
  71. data/lib/templates/xctestable/swift/Interactor/VIPERInteractorTests.swift +29 -0
  72. data/lib/templates/xctestable/swift/Presenter/VIPERPresenter.swift +15 -0
  73. data/lib/templates/xctestable/swift/Presenter/VIPERPresenterTests.swift +29 -0
  74. data/lib/templates/xctestable/swift/Protocols/VIPERProtocols.swift +70 -0
  75. data/lib/templates/xctestable/swift/View/VIPERView.swift +12 -0
  76. data/lib/templates/xctestable/swift/View/VIPERViewTests.swift +29 -0
  77. data/lib/templates/xctestable/swift/WireFrame/VIPERWireFrame.swift +32 -0
  78. data/lib/templates/xctestable/viperspec.yml +4 -0
  79. data/lib/vipergen/dirutils.rb +17 -0
  80. data/lib/vipergen/filemanager.rb +51 -0
  81. data/lib/vipergen/generator.rb +66 -0
  82. data/lib/vipergen/templatemanager.rb +53 -0
  83. data/lib/vipergen/version.rb +4 -0
  84. data/lib/vipergen/viperthor.rb +21 -0
  85. data/lib/vipergen.rb +6 -0
  86. data/spec/spec_helper.rb +4 -0
  87. data/spec/vipergen/vipergen_spec.rb +133 -0
  88. metadata +207 -0
@@ -0,0 +1,66 @@
1
+ module Vipergen
2
+ # Cosntants
3
+ class Generator
4
+ # Constants
5
+ LANGUAGES = ["swift", "objc"]
6
+ REPLACEMENT_KEY = "VIPER"
7
+ AUTHOR_REPLACEMENT_KEY = "AUTHOR"
8
+ YEAR_REPLACEMENT_KEY = "YEAR"
9
+ SWIFT_MODULE_REPLACEMENT_KEY = "SWIFT_MODULE"
10
+
11
+ # Main method that generate the VIPER files structure
12
+ def self.generate_viper(template, language, name, path, author, swift_module)
13
+ puts "Generating VIPER-Module"
14
+ puts "Template: #{template}"
15
+ puts "Language: #{language}"
16
+ puts "Name: #{name}"
17
+ puts "Path: #{path}"
18
+ puts "Author: #{author}"
19
+ puts "Module: #{swift_module}"
20
+ path_from = Vipergen::FileManager.path_from(template, language)
21
+ path_to = Vipergen::FileManager.destination_viper_path(path, name)
22
+ Vipergen::FileManager.copy(path_from, path_to)
23
+ files = Vipergen::FileManager.files_in_path(path_to)
24
+ rename_files(files, name, author, swift_module)
25
+ end
26
+
27
+ # Rename all the files in the files array
28
+ # - It renames the name of the file
29
+ # - It renames the content of the file
30
+ def self.rename_files(files, name, author, swift_module)
31
+ files.each do |file|
32
+ raise SyntaxError unless file.include? (Vipergen::Generator::REPLACEMENT_KEY)
33
+ rename_file(file, name, author, swift_module)
34
+ end
35
+ end
36
+
37
+ # Rename a given file
38
+ # - It renames the name of the file
39
+ # - It renames the content of the file
40
+ def self.rename_file(file, name, author, swift_module)
41
+ new_path = file.gsub((Vipergen::Generator::REPLACEMENT_KEY), name)
42
+ Vipergen::FileManager.move(file, new_path)
43
+ rename_file_content(new_path, name, author, swift_module)
44
+ end
45
+
46
+ # Rename the file content
47
+ # @return: An String with the every VIPER replaced by 'name'
48
+ def self.rename_file_content(filename, name, author, swift_module)
49
+ # Reading content
50
+ file = File.open(filename, "rb")
51
+ content = file.read
52
+ file.close
53
+
54
+ # Replacing content
55
+ content = content.gsub((Vipergen::Generator::REPLACEMENT_KEY), name)
56
+ content = content.gsub((Vipergen::Generator::AUTHOR_REPLACEMENT_KEY), author)
57
+ content = content.gsub((Vipergen::Generator::SWIFT_MODULE_REPLACEMENT_KEY), swift_module)
58
+ content = content.gsub((Vipergen::Generator::YEAR_REPLACEMENT_KEY), "#{Time.new.year}")
59
+
60
+ # Saving content with replaced string
61
+ File.open(filename, "w+") do |file|
62
+ file.write(content)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,53 @@
1
+ require 'yaml'
2
+ module Vipergen
3
+ class TemplateManager
4
+
5
+ # Returns the templates dir
6
+ def self.templates_dir
7
+ t = "#{File.expand_path File.dirname(__FILE__)}/../templates"
8
+ end
9
+
10
+ # Get the available templates paths
11
+ # @return Array[String] with available templates paths
12
+ def self.templates_paths()
13
+ template_dir = Vipergen::TemplateManager.templates_dir
14
+ return Vipergen::DirUtils.directories_in(template_dir)
15
+ end
16
+
17
+ # Get the templates names
18
+ # @return Array[String] with templates names (got from the folder)
19
+ def self.templates()
20
+ templates_paths.map{|template_path| template_name_from_path(template_path)}
21
+ end
22
+
23
+ # Returns the template name from a given template_path
24
+ # @return String with the template name
25
+ def self.template_name_from_path(template_path)
26
+ return template_path.split("/").last
27
+ end
28
+
29
+ # Returns the description of all the templates available
30
+ # @return String with the entire description
31
+ def self.templates_description()
32
+ description = "\nAvailable templates \n"
33
+ description += "------------------- \n"
34
+ self.templates_paths.each do |template_path|
35
+ description += "> #{template_description(template_path)} \n"
36
+ end
37
+ return description
38
+ end
39
+
40
+ # Returns the description of a given template
41
+ # @param template String with the template path whose description is going to be returned
42
+ # @return String with the template description
43
+ def self.template_description(template_path)
44
+ template_description = ""
45
+
46
+ # Reading yaml
47
+ template_content = YAML.load_file(File.join(template_path,'viperspec.yml'))
48
+
49
+ # Generating string
50
+ template_description+= "| #{template_name_from_path(template_path)} by #{template_content["author"]} |: #{template_content["template_description"]}"
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,4 @@
1
+ module Vipergen
2
+ NAME = "vipergen"
3
+ VERSION = "0.2.9"
4
+ end
@@ -0,0 +1,21 @@
1
+ require 'thor'
2
+ require 'vipergen'
3
+
4
+ module Vipergen
5
+ class ViperThor < Thor
6
+ desc "generate", "Generate a VIPER module"
7
+ option :language, :required => false, :default => 'objc', :type => :string, :desc => "The language of the generated module (swift, objc)"
8
+ option :template, :required => false, :default => 'default', :type => :string , :desc => "Template for the generation"
9
+ option :path, :required => true, :type => :string , :desc => "Path where the output module is going to be saved"
10
+ option :author, :required => false, :default => 'VIPER', :type => :string , :desc => "Author to be specified on the file's header. Otherwise VIPER will be used"
11
+ option :swift_module, :required => false, :default => 'VIPER', :type => :string , :desc => "Swift module name to be specified on the @testable directive. Otherwise VIPER will be used"
12
+ def generate(name)
13
+ Vipergen::Generator.generate_viper(options[:template], options[:language], name, options[:path], options[:author], options[:swift_module])
14
+ end
15
+
16
+ desc "templates", "Get a list of available templates"
17
+ def templates()
18
+ puts Vipergen::TemplateManager.templates_description()
19
+ end
20
+ end
21
+ end
data/lib/vipergen.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'vipergen/generator'
2
+ require 'vipergen/filemanager'
3
+ require 'vipergen/dirutils'
4
+ require 'vipergen/version'
5
+ require 'vipergen/viperthor'
6
+ require 'vipergen/templatemanager'
@@ -0,0 +1,4 @@
1
+ require 'vipergen'
2
+ require "codeclimate-test-reporter"
3
+
4
+ CodeClimate::TestReporter.start
@@ -0,0 +1,133 @@
1
+ require 'spec_helper'
2
+
3
+ describe Vipergen do
4
+ context "when generating path" do
5
+ it "should return nil if no valid template" do
6
+ valid_template = Vipergen::FileManager.is_template_valid("asdgas")
7
+ expect(valid_template).to be(false)
8
+ end
9
+ it "should return nil if no valid language" do
10
+ valid_template = Vipergen::FileManager.is_template_valid("asdgas")
11
+ expect(valid_template).to be(false)
12
+ end
13
+ it "should return nil if no valid language when getting path" do
14
+ path = Vipergen::FileManager.path_from("default", "asgass")
15
+ expect(path).to be(nil)
16
+ end
17
+ it "should return nil if no valid template when getting path" do
18
+ path = Vipergen::FileManager.path_from("asga", "swift")
19
+ expect(path).to be(nil)
20
+ end
21
+ it "should append the name to the given user path" do
22
+ to_path = Vipergen::FileManager.destination_viper_path("path/", "pepito")
23
+ expect(to_path).to eq(File.join(File.expand_path("path/"),"pepito"))
24
+ end
25
+ end
26
+ context "copying a folder to a diferent place" do
27
+ before (:each) do
28
+ Dir.mkdir 'foo'
29
+ Dir.mkdir 'foo/subfoo'
30
+ end
31
+
32
+ it "should copy a given folder properly" do
33
+ Vipergen::FileManager.copy('foo','test_foo')
34
+ expect(File.directory?('test_foo/subfoo')).to eq(true)
35
+ end
36
+
37
+ after (:each) do
38
+ FileUtils.rm_rf('foo')
39
+ FileUtils.rm_rf('test_foo')
40
+ end
41
+ end
42
+ end
43
+
44
+ describe Vipergen::Generator do
45
+ context "when renaming file content" do
46
+ before (:each) do
47
+ File.open("test.txt", 'w') {|f| f.write("I'm a #{Vipergen::Generator::REPLACEMENT_KEY} file by #{Vipergen::Generator::AUTHOR_REPLACEMENT_KEY} on #{Vipergen::Generator::YEAR_REPLACEMENT_KEY}") }
48
+ end
49
+
50
+ it "should rename every VIPER word to the given name" do
51
+ Vipergen::Generator.rename_file_content("test.txt","RENAMED", "pepito")
52
+ file = File.open("test.txt", "rb")
53
+ content = file.read
54
+ expect(content).to eq("I'm a RENAMED file by pepito on #{Time.new.year}")
55
+ end
56
+
57
+ after (:each) do
58
+ FileUtils.rm('test.txt')
59
+ end
60
+ end
61
+
62
+ context "when renaming file" do
63
+ before (:each) do
64
+ File.open("#{Vipergen::Generator::REPLACEMENT_KEY}test.txt", 'w') {|f| f.write("I'm a #{Vipergen::Generator::REPLACEMENT_KEY} file") }
65
+ end
66
+
67
+ it "every file should be renamed in rename_files" do
68
+ expect(Vipergen::Generator).to receive(:rename_file)
69
+ Vipergen::Generator.rename_files(["#{Vipergen::Generator::REPLACEMENT_KEY}file.txt"], "MyModule", "Pepi")
70
+ end
71
+
72
+ it "should raise a SyntaxError exeption if there's a file in the template without the proper name" do
73
+ expect{Vipergen::Generator.rename_files(["asgasgs.txt"], "MyModule", "Pepi")}.to raise_error
74
+ end
75
+
76
+ it "should rename the VIPER in name to the given name" do
77
+ file = "#{Vipergen::Generator::REPLACEMENT_KEY}test.txt"
78
+ name = "RENAMED"
79
+ author = "PEPI"
80
+ Vipergen::Generator.rename_file(file, name, author)
81
+ expect(File.exist? "RENAMEDtest.txt").to eq(true)
82
+ end
83
+
84
+ it "should rename the file content after the file name rename" do
85
+ file = "#{Vipergen::Generator::REPLACEMENT_KEY}test.txt"
86
+ name = "RENAMED"
87
+ author = "PEPI"
88
+ expect(Vipergen::Generator).to receive(:rename_file_content)
89
+ Vipergen::Generator.rename_file(file, name, author)
90
+ end
91
+
92
+ after (:each) do
93
+ File.delete "#{Vipergen::Generator::REPLACEMENT_KEY}test.txt" if File.exist? "#{Vipergen::Generator::REPLACEMENT_KEY}test.txt"
94
+ File.delete "RENAMEDtest.txt" if File.exist? "RENAMEDtest.txt"
95
+ end
96
+ end
97
+ end
98
+
99
+ describe Vipergen::DirUtils do
100
+ context "getting directories" do
101
+ before (:each) do
102
+ Dir.mkdir 'foo'
103
+ Dir.mkdir 'foo/subfoo'
104
+ end
105
+
106
+ it "should return the directories inside a given one" do
107
+ expect(Vipergen::DirUtils.directories_in('foo').count).to eq(1)
108
+ end
109
+
110
+ after (:each) do
111
+ FileUtils.rm_rf('foo')
112
+ end
113
+ end
114
+ end
115
+
116
+ describe Vipergen::TemplateManager do
117
+ context "getting templates" do
118
+ before (:each) do
119
+ Dir.mkdir 'foo'
120
+ Dir.mkdir 'foo/subfoo'
121
+ Dir.mkdir 'foo/subfoo2'
122
+ end
123
+
124
+ it "should return the proper templates in templates directory" do
125
+ Vipergen::TemplateManager.stub(:templates_dir).and_return('foo/')
126
+ expect(Vipergen::TemplateManager.templates_paths.count).to eq(2)
127
+ end
128
+
129
+ after (:each) do
130
+ FileUtils.rm_rf('foo')
131
+ end
132
+ end
133
+ end
metadata ADDED
@@ -0,0 +1,207 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vipergen-xctestable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.9
5
+ platform: ruby
6
+ authors:
7
+ - Pedro Piñera
8
+ - Michal Wojtysiak
9
+ - Hasan Huseyin Topcu
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2016-09-14 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - '>='
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rspec
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: bundler
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ~>
48
+ - !ruby/object:Gem::Version
49
+ version: '1.0'
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ~>
55
+ - !ruby/object:Gem::Version
56
+ version: '1.0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: byebug
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :development
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: thor
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ description: Based on the objc.io post about VIPER. It saves time in the implementation
86
+ generating the controllers and adding interactions between them (in Swift or Objective-C)
87
+ email: hhtopcu@gmail.com
88
+ executables:
89
+ - vipergen
90
+ extensions: []
91
+ extra_rdoc_files:
92
+ - README.md
93
+ files:
94
+ - LICENSE
95
+ - README.md
96
+ - lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.h
97
+ - lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.m
98
+ - lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.h
99
+ - lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.m
100
+ - lib/templates/default/objc/Interactor/VIPERInteractor.h
101
+ - lib/templates/default/objc/Interactor/VIPERInteractor.m
102
+ - lib/templates/default/objc/Interactor/VIPERItem.h
103
+ - lib/templates/default/objc/Interactor/VIPERItem.m
104
+ - lib/templates/default/objc/Presenter/VIPERPresenter.h
105
+ - lib/templates/default/objc/Presenter/VIPERPresenter.m
106
+ - lib/templates/default/objc/Protocols/VIPERProtocols.h
107
+ - lib/templates/default/objc/View/VIPERView.h
108
+ - lib/templates/default/objc/View/VIPERView.m
109
+ - lib/templates/default/objc/WireFrame/VIPERWireFrame.h
110
+ - lib/templates/default/objc/WireFrame/VIPERWireFrame.m
111
+ - lib/templates/default/swift/DataManager/API/VIPERAPIDataManager.swift
112
+ - lib/templates/default/swift/DataManager/Local/VIPERLocalDataManager.swift
113
+ - lib/templates/default/swift/Interactor/VIPERInteractor.swift
114
+ - lib/templates/default/swift/Interactor/VIPERItem.swift
115
+ - lib/templates/default/swift/Presenter/VIPERPresenter.swift
116
+ - lib/templates/default/swift/Protocols/VIPERProtocols.swift
117
+ - lib/templates/default/swift/View/VIPERView.swift
118
+ - lib/templates/default/swift/WireFrame/VIPERWireFrame.swift
119
+ - lib/templates/default/viperspec.yml
120
+ - lib/templates/testable/objc/DataManager/VIPERDataManager.h
121
+ - lib/templates/testable/objc/DataManager/VIPERDataManager.m
122
+ - lib/templates/testable/objc/Interactor/VIPERInteractor.h
123
+ - lib/templates/testable/objc/Interactor/VIPERInteractor.m
124
+ - lib/templates/testable/objc/Interactor/VIPERInteractorSpec.m
125
+ - lib/templates/testable/objc/Presenter/VIPERPresenter.h
126
+ - lib/templates/testable/objc/Presenter/VIPERPresenter.m
127
+ - lib/templates/testable/objc/Presenter/VIPERPresenterSpec.m
128
+ - lib/templates/testable/objc/Protocols/VIPERProtocols.h
129
+ - lib/templates/testable/objc/ViewController/VIPERViewController.h
130
+ - lib/templates/testable/objc/ViewController/VIPERViewController.m
131
+ - lib/templates/testable/objc/ViewController/VIPERViewControllerSpec.m
132
+ - lib/templates/testable/objc/WireFrame/VIPERWireFrame.h
133
+ - lib/templates/testable/objc/WireFrame/VIPERWireFrame.m
134
+ - lib/templates/testable/swift/DataManager/API/VIPERAPIDataManager.swift
135
+ - lib/templates/testable/swift/DataManager/Local/VIPERLocalDataManager.swift
136
+ - lib/templates/testable/swift/Interactor/VIPERInteractor.swift
137
+ - lib/templates/testable/swift/Interactor/VIPERInteractorSpec.swift
138
+ - lib/templates/testable/swift/Presenter/VIPERPresenter.swift
139
+ - lib/templates/testable/swift/Presenter/VIPERPresenterSpec.swift
140
+ - lib/templates/testable/swift/Protocols/VIPERProtocols.swift
141
+ - lib/templates/testable/swift/View/VIPERView.swift
142
+ - lib/templates/testable/swift/View/VIPERViewSpec.swift
143
+ - lib/templates/testable/swift/WireFrame/VIPERWireFrame.swift
144
+ - lib/templates/testable/viperspec.yml
145
+ - lib/templates/xctestable/objc/DataManager/VIPERDataManager.h
146
+ - lib/templates/xctestable/objc/DataManager/VIPERDataManager.m
147
+ - lib/templates/xctestable/objc/Interactor/VIPERInteractor.h
148
+ - lib/templates/xctestable/objc/Interactor/VIPERInteractor.m
149
+ - lib/templates/xctestable/objc/Interactor/VIPERInteractorSpec.m
150
+ - lib/templates/xctestable/objc/Presenter/VIPERPresenter.h
151
+ - lib/templates/xctestable/objc/Presenter/VIPERPresenter.m
152
+ - lib/templates/xctestable/objc/Presenter/VIPERPresenterSpec.m
153
+ - lib/templates/xctestable/objc/Protocols/VIPERProtocols.h
154
+ - lib/templates/xctestable/objc/ViewController/VIPERViewController.h
155
+ - lib/templates/xctestable/objc/ViewController/VIPERViewController.m
156
+ - lib/templates/xctestable/objc/ViewController/VIPERViewControllerSpec.m
157
+ - lib/templates/xctestable/objc/WireFrame/VIPERWireFrame.h
158
+ - lib/templates/xctestable/objc/WireFrame/VIPERWireFrame.m
159
+ - lib/templates/xctestable/swift/DataManager/API/VIPERAPIDataManager.swift
160
+ - lib/templates/xctestable/swift/DataManager/Local/VIPERLocalDataManager.swift
161
+ - lib/templates/xctestable/swift/Interactor/VIPERInteractor.swift
162
+ - lib/templates/xctestable/swift/Interactor/VIPERInteractorTests.swift
163
+ - lib/templates/xctestable/swift/Presenter/VIPERPresenter.swift
164
+ - lib/templates/xctestable/swift/Presenter/VIPERPresenterTests.swift
165
+ - lib/templates/xctestable/swift/Protocols/VIPERProtocols.swift
166
+ - lib/templates/xctestable/swift/View/VIPERView.swift
167
+ - lib/templates/xctestable/swift/View/VIPERViewTests.swift
168
+ - lib/templates/xctestable/swift/WireFrame/VIPERWireFrame.swift
169
+ - lib/templates/xctestable/viperspec.yml
170
+ - lib/vipergen/dirutils.rb
171
+ - lib/vipergen/filemanager.rb
172
+ - lib/vipergen/generator.rb
173
+ - lib/vipergen/templatemanager.rb
174
+ - lib/vipergen/version.rb
175
+ - lib/vipergen/viperthor.rb
176
+ - lib/vipergen.rb
177
+ - spec/spec_helper.rb
178
+ - spec/vipergen/vipergen_spec.rb
179
+ - bin/vipergen
180
+ homepage: https://github.com/hhtopcu/viper-module-generator
181
+ licenses:
182
+ - MIT
183
+ metadata: {}
184
+ post_install_message:
185
+ rdoc_options:
186
+ - --charset=UTF-8
187
+ require_paths:
188
+ - lib
189
+ required_ruby_version: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - '>='
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ required_rubygems_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - '>='
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ requirements: []
200
+ rubyforge_project:
201
+ rubygems_version: 2.0.14.1
202
+ signing_key:
203
+ specification_version: 4
204
+ summary: Generates XCode VIPER module controllers structure
205
+ test_files:
206
+ - spec/spec_helper.rb
207
+ - spec/vipergen/vipergen_spec.rb