Class: FlutterRb::PubspecParser

Inherits:
Object
  • Object
show all
Defined in:
lib/flutter_rb/project/specs/flutter/pubspec.rb

Overview

pubspec.yaml parser

Instance Method Summary collapse

Constructor Details

#initialize(path, pubspec) ⇒ PubspecParser

Returns a new instance of PubspecParser.

Parameters:



28
29
30
31
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 28

def initialize(path, pubspec)
  @path = path
  @pubspec = pubspec
end

Instance Method Details

#dev_dependencies(pubspec) ⇒ DevDependency[]

Parameters:

Returns:



57
58
59
60
61
62
63
64
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 57

def dev_dependencies(pubspec)
  pubspec['dev_dependencies']&.map do |dev_dependency|
    DevDependency.new(
      dev_dependency.first,
      dev_dependency.last
    )
  end
end

#parsePubspec

Returns:



34
35
36
37
38
39
40
41
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 34

def parse
  Pubspec.new(
    @path,
    pubspec_info(@pubspec),
    dev_dependencies(@pubspec),
    platform_plugins(@pubspec)
  )
end

#platform_plugins(pubspec) ⇒ PlatformPlugin[]

Parameters:

Returns:



68
69
70
71
72
73
74
75
76
77
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 68

def platform_plugins(pubspec)
  pubspec.dig('flutter', 'plugin', 'platforms')&.map do |platform_plugin|
    plugin_info = platform_plugin.last
    PlatformPlugin.new(
      plugin_info['package'],
      plugin_info['pluginClass'],
      platform_plugin.first == Platform::ANDROID ? Platform::ANDROID : Platform::IOS
    )
  end
end

#pubspec_info(pubspec) ⇒ PubspecInfo

Parameters:

Returns:



45
46
47
48
49
50
51
52
53
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 45

def pubspec_info(pubspec)
  PubspecInfo.new(
    pubspec['name'],
    pubspec['description'],
    pubspec['version'],
    pubspec['author'],
    pubspec['homepage']
  )
end