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:



31
32
33
34
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 31

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

Instance Method Details

#dev_dependencies(pubspec) ⇒ DevDependency[]

Parameters:

Returns:



60
61
62
63
64
65
66
67
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 60

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

#parsePubspec

Returns:



37
38
39
40
41
42
43
44
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 37

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

#platform_plugins(pubspec) ⇒ PlatformPlugin[]

Parameters:

Returns:



71
72
73
74
75
76
77
78
79
80
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 71

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:



48
49
50
51
52
53
54
55
56
# File 'lib/flutter_rb/project/specs/flutter/pubspec.rb', line 48

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