ruby-on-rails - Ruby - 从 Podfile.lock 解析依赖项数据

标签 ruby-on-rails ruby regex json

我有一个示例 podfile.lock 如下:

PODS:
- MyLibrary1 (0.10.0):
  - MyLibrary1A (>= 0.9.0)
- AFNetworking (1.1.0)
- MyLibrary2 (3.0.0)
- Objective-C-HMTL-Parser (0.0.1)

DEPENDENCIES:
- MyLibrary1 (= 0.10.0)
- AFNetworking (= 1.1.0)
- MyLibrary2 (= 3.0.0)
- Objective-C-HMTL-Parser (= 0.0.1)

SPEC CHECKSUMS:
  MyLibrary1: 1d65fa5d905211c8981a11091eae8c98b410eb19
  AFNetworking: 761a418233d280c1e0580bcb76ff9cb4c3073d17
  MyLibrary2: 35b80d5cc522b0f53beb5583c635e42ecce69743
  Objective-C-HMTL-Parser: 4fca85e186a829cfe8db8e316e9688571ea4dfed

COCOAPODS: 0.16.9

要求:

我想要 JSON 格式的依赖数据之间的数据,即:

{
"MyLibrary1": "0.10.0",
"AFNetworking": "1.1.0",
"MyLibrary2": "3.0.0",
"Objective-C-HMTL-Parser": "0.0.1"
}

我做了什么:

我尝试首先使用正则表达式获取“DEPENDENCIES:”中的数据:

  start_string = "DEPENDENCIES:"
  end_string = "SPEC CHECKSUMS:"
  file_contents[/#{start_string}(.*?)#{end_string}/m, 1]

有了这个我得到:

"\n  - MyLibrary1 (= 0.10.0)\n  - AFNetworking (= 1.1.0)\n  - MyLibrary2 (= 3.0.0)\n  - Objective-C-HMTL-Parser (= 0.0.1)\n\n"

问题:

根据上面发布的正则表达式结果,如何/什么是获取/分离“MyLibrary1”和“0.10.0”以生成 JSON 的简单方法?

最佳答案

您可以使用 \G anchor 来标记最后一场比赛末尾的位置:

rubular

data.scan /(?:\G(?!\A)|^DEPENDENCIES:\n)- (\S+) \(= ([^)]+)\)\n/
=> [["MyLibrary1", "0.10.0"], ["AFNetworking", "1.1.0"], ["MyLibrary2", "3.0.0"], ["Objective-C-HMTL-Parser", "0.0.1"]]

关于ruby-on-rails - Ruby - 从 Podfile.lock 解析依赖项数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25875474/

相关文章:

ruby-on-rails - 如何在模型观察者中获取 current_user?

java - saml 集成 Ruby(IDP) 和 Java(SP)

ruby - 使用附加数据动态创建的类方法 : data is being lost

用于数学运算的 PHP 正则表达式

ruby-on-rails - simple_form 中的分组集合

javascript - Rails 选择表单 : displaying and using select form value before submit?

ruby-on-rails - Ruby on Rails/Paperclip/AWS::S3::NoSuchBucket 错误

ruby-on-rails - 有没有办法在模块中使用类方法而不在 Rails 中扩展它?

java - 正则表达式捕获组混淆

正则表达式选择长度超过 4 个字符的单词,但如果重复则仅选择一个实例