michaelklishin / cucumber.el

Emacs mode for editing Cucumber plain text stories
None!
253 stars 90 forks source link

Compatibility with the gherkin gem 4 #66

Open zw963 opened 8 years ago

zw963 commented 8 years ago

https://github.com/michaelklishin/cucumber.el/blob/master/support/find_step.rb

It not worked at all.

thanks

michaelklishin commented 8 years ago

@zw963 can you please be more specific than "it doesn't work at all"? "at all" is not a specific problem that can be fixed.

zw963 commented 8 years ago

Sorry, I hard to say the difference between 2.x and 4.x

following is 4.0.0 gherkin installed in ruby 2.2.3, it seem like not need native extension anymore.

.
└── gherkin
    ├── ast_builder.rb
    ├── ast_node.rb
    ├── dialect.rb
    ├── errors.rb
    ├── gherkin-languages.json
    ├── gherkin_line.rb
    ├── parser.rb
    ├── pickles
    │   └── compiler.rb
    ├── token_formatter_builder.rb
    ├── token_matcher.rb
    ├── token.rb
    └── token_scanner.rb

Version 2.12.2 is different.

.
├── gherkin
│   ├── c_lexer.rb
│   ├── formatter
│   │   ├── ansi_escapes.rb
│   │   ├── argument.rb
│   │   ├── escaping.rb
│   │   ├── filter_formatter.rb
│   │   ├── hashable.rb
│   │   ├── json_formatter.rb
│   │   ├── line_filter.rb
│   │   ├── model.rb
│   │   ├── pretty_formatter.rb
│   │   ├── regexp_filter.rb
│   │   ├── step_printer.rb
│   │   ├── tag_count_formatter.rb
│   │   └── tag_filter.rb
│   ├── i18n.json
│   ├── i18n.rb
│   ├── json_parser.rb
│   ├── lexer
│   │   ├── ar.rb
│   │   ├── bg.rb
│   │   ├── bm.rb
│   │   ├── ca.rb
│   │   ├── cs.rb
│   │   ├── cy_gb.rb
│   │   ├── da.rb
│   │   ├── de.rb
│   │   ├── el.rb
│   │   ├── en_au.rb
│   │   ├── encoding.rb
│   │   ├── en_lol.rb
│   │   ├── en_old.rb
│   │   ├── en_pirate.rb
│   │   ├── en.rb
│   │   ├── en_scouse.rb
│   │   ├── en_tx.rb
│   │   ├── eo.rb
│   │   ├── es.rb
│   │   ├── et.rb
│   │   ├── fa.rb
│   │   ├── fi.rb
│   │   ├── fr.rb
│   │   ├── gl.rb
│   │   ├── he.rb
│   │   ├── hi.rb
│   │   ├── hr.rb
│   │   ├── hu.rb
│   │   ├── i18n_lexer.rb
│   │   ├── id.rb
│   │   ├── is.rb
│   │   ├── it.rb
│   │   ├── ja.rb
│   │   ├── kn.rb
│   │   ├── ko.rb
│   │   ├── lt.rb
│   │   ├── lu.rb
│   │   ├── lv.rb
│   │   ├── nl.rb
│   │   ├── no.rb
│   │   ├── pa.rb
│   │   ├── pl.rb
│   │   ├── pt.rb
│   │   ├── ro.rb
│   │   ├── ru.rb
│   │   ├── sk.rb
│   │   ├── sr_cyrl.rb
│   │   ├── sr_latn.rb
│   │   ├── sv.rb
│   │   ├── th.rb
│   │   ├── tl.rb
│   │   ├── tr.rb
│   │   ├── tt.rb
│   │   ├── uk.rb
│   │   ├── uz.rb
│   │   ├── vi.rb
│   │   ├── zh_cn.rb
│   │   └── zh_tw.rb
│   ├── listener
│   │   ├── event.rb
│   │   └── formatter_listener.rb
│   ├── native
│   │   ├── java.rb
│   │   ├── null.rb
│   │   └── therubyracer.rb
│   ├── native.rb
│   ├── parser
│   │   ├── meta.txt
│   │   ├── parser.rb
│   │   ├── root.txt
│   │   └── steps.txt
│   ├── platform.rb
│   ├── README.md
│   ├── rubify.rb
│   └── tag_expression.rb
├── gherkin_lexer_ar.so
├── gherkin_lexer_bg.so
├── gherkin_lexer_bm.so
├── gherkin_lexer_ca.so
├── gherkin_lexer_cs.so
├── gherkin_lexer_cy_gb.so
├── gherkin_lexer_da.so
├── gherkin_lexer_de.so
├── gherkin_lexer_el.so
├── gherkin_lexer_en_au.so
├── gherkin_lexer_en_lol.so
├── gherkin_lexer_en_old.so
├── gherkin_lexer_en_pirate.so
├── gherkin_lexer_en_scouse.so
├── gherkin_lexer_en.so
├── gherkin_lexer_en_tx.so
├── gherkin_lexer_eo.so
├── gherkin_lexer_es.so
├── gherkin_lexer_et.so
├── gherkin_lexer_fa.so
├── gherkin_lexer_fi.so
├── gherkin_lexer_fr.so
├── gherkin_lexer_gl.so
├── gherkin_lexer_he.so
├── gherkin_lexer_hi.so
├── gherkin_lexer_hr.so
├── gherkin_lexer_hu.so
├── gherkin_lexer_id.so
├── gherkin_lexer_is.so
├── gherkin_lexer_it.so
├── gherkin_lexer_ja.so
├── gherkin_lexer_kn.so
├── gherkin_lexer_ko.so
├── gherkin_lexer_lt.so
├── gherkin_lexer_lu.so
├── gherkin_lexer_lv.so
├── gherkin_lexer_nl.so
├── gherkin_lexer_no.so
├── gherkin_lexer_pa.so
├── gherkin_lexer_pl.so
├── gherkin_lexer_pt.so
├── gherkin_lexer_ro.so
├── gherkin_lexer_ru.so
├── gherkin_lexer_sk.so
├── gherkin_lexer_sr_cyrl.so
├── gherkin_lexer_sr_latn.so
├── gherkin_lexer_sv.so
├── gherkin_lexer_th.so
├── gherkin_lexer_tl.so
├── gherkin_lexer_tr.so
├── gherkin_lexer_tt.so
├── gherkin_lexer_uk.so
├── gherkin_lexer_uz.so
├── gherkin_lexer_vi.so
├── gherkin_lexer_zh_cn.so
├── gherkin_lexer_zh_tw.so
└── gherkin.rb

Many file is different, and not exist anymore.

So, maybe should update the emacs package to use new 4.x ?

Thanks

wvxvw commented 7 years ago

I can confirm: there is no way this code can work with gherkin 4.1.3 (I didn't try other versions).

michaelklishin commented 7 years ago

@wvxvw @zw963 feel free to submit a PR that upgrades to Gherkin 4.x.

zw963 commented 6 years ago

After two years, find_step.rb still not worked with cucumber 3.x, today, i try to hack it, but no luck.

Dont't know where to found old parser = Gherkin::Parser.Parser.new(extractor, true, 'root', false, iso_code) equivalent in new version cucumber.

Apteryks commented 4 years ago

Sadly, the last 3.x release of Gherkin is 3.2.0, and it doesn't work with a current Ruby (2.5.X):

irb(main):001:0> require 'gherkin'
Traceback (most recent call last):
        4: from /home/maxim/.guix-profile/bin/irb:11:in `<main>'
        3: from (irb):1
        2: from /gnu/store/2m1d7g5nkyg5dy79xgvx7w16ykzl80ss-ruby-2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
        1: from /gnu/store/2m1d7g5nkyg5dy79xgvx7w16ykzl80ss-ruby-2.5.3/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
LoadError (cannot load such file -- gherkin)