Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Revert "Revert "Merge pull request #3917 from jruby/truffle_readline""
This reverts commit 005ec3d.
- Loading branch information
Showing
21 changed files
with
892 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
# Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. This | ||
# code is released under a tri EPL/GPL/LGPL license. You can use it, | ||
# redistribute it and/or modify it under the terms of the: | ||
# | ||
# Eclipse Public License version 1.0 | ||
# GNU General Public License version 2 | ||
# GNU Lesser General Public License version 2.1 | ||
|
||
Readline = Truffle::Readline | ||
|
||
module Readline | ||
|
||
HISTORY = Object.new | ||
VERSION = 'JLine wrapper' | ||
|
||
module_function | ||
|
||
%i[ | ||
basic_quote_characters | ||
basic_quote_characters= | ||
completer_quote_characters | ||
completer_quote_characters= | ||
completer_word_break_characters | ||
completer_word_break_characters= | ||
completion_append_character | ||
completion_append_character= | ||
completion_case_fold | ||
completion_case_fold= | ||
completion_proc | ||
completion_proc= | ||
emacs_editing_mode | ||
emacs_editing_mode? | ||
filename_quote_characters | ||
filename_quote_characters= | ||
point= | ||
pre_input_hook | ||
pre_input_hook= | ||
redisplay | ||
set_screen_size | ||
special_prefixes | ||
special_prefixes= | ||
vi_editing_mode | ||
vi_editing_mode? | ||
set_screen_size | ||
].each do |method_name| | ||
define_method(method_name) do | ||
raise NotImplementedError.new("#{method_name}() function is unimplemented on this machine") | ||
end | ||
end | ||
|
||
def input=(input) | ||
# TODO (nirvdrum 20-May-16): This should do something functional. | ||
nil | ||
end | ||
|
||
def output=(output) | ||
# TODO (nirvdrum 20-May-16): This should do something functional. | ||
nil | ||
end | ||
|
||
end | ||
|
||
class << Readline::HISTORY | ||
|
||
include Enumerable | ||
include Truffle::ReadlineHistory | ||
|
||
def empty? | ||
size == 0 | ||
end | ||
|
||
def to_s | ||
'HISTORY' | ||
end | ||
|
||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 2 additions & 0 deletions
2
spec/truffle/tags/library/readline/basic_quote_characters_tags.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
fails:Readline.basic_quote_characters returns not nil | ||
fails:Readline.basic_quote_characters= returns the passed string |
2 changes: 2 additions & 0 deletions
2
spec/truffle/tags/library/readline/completer_quote_characters_tags.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
fails:Readline.completer_quote_characters returns nil | ||
fails:Readline.completer_quote_characters= returns the passed string |
2 changes: 2 additions & 0 deletions
2
spec/truffle/tags/library/readline/completer_word_break_characters_tags.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
fails:Readline.completer_word_break_characters returns nil | ||
fails:Readline.completer_word_break_characters= returns the passed string |
2 changes: 2 additions & 0 deletions
2
spec/truffle/tags/library/readline/completion_append_character_tags.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
fails:Readline.completion_append_character returns not nil | ||
fails:Readline.completion_append_character= returns the first character of the passed string |
2 changes: 2 additions & 0 deletions
2
spec/truffle/tags/library/readline/completion_case_fold_tags.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
fails:Readline.completion_case_fold returns nil | ||
fails:Readline.completion_case_fold= returns the passed boolean |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
fails:Readline.completion_proc returns nil | ||
fails:Readline.completion_proc= returns the passed Proc | ||
fails:Readline.completion_proc= returns an ArgumentError if not given an Proc or #call |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
fails:Readline.emacs_editing_mode returns nil |
2 changes: 2 additions & 0 deletions
2
spec/truffle/tags/library/readline/filename_quote_characters_tags.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
fails:Readline.filename_quote_characters returns nil | ||
fails:Readline.filename_quote_characters= returns the passed string |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
fails:Readline.vi_editing_mode returns nil |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
50 changes: 50 additions & 0 deletions
50
truffle/src/main/java/org/jruby/truffle/core/cast/NameToJavaStringWithDefaultNode.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
/* | ||
* Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. This | ||
* code is released under a tri EPL/GPL/LGPL license. You can use it, | ||
* redistribute it and/or modify it under the terms of the: | ||
* | ||
* Eclipse Public License version 1.0 | ||
* GNU General Public License version 2 | ||
* GNU Lesser General Public License version 2.1 | ||
*/ | ||
package org.jruby.truffle.core.cast; | ||
|
||
import com.oracle.truffle.api.dsl.NodeChild; | ||
import com.oracle.truffle.api.dsl.Specialization; | ||
import com.oracle.truffle.api.frame.VirtualFrame; | ||
import com.oracle.truffle.api.source.SourceSection; | ||
import org.jruby.truffle.RubyContext; | ||
import org.jruby.truffle.language.NotProvided; | ||
import org.jruby.truffle.language.RubyNode; | ||
|
||
/** | ||
* Take a Symbol or some object accepting #to_str | ||
* and convert it to a Java String and defaults to | ||
* the given value if not provided. | ||
*/ | ||
@NodeChild(value = "value", type = RubyNode.class) | ||
public abstract class NameToJavaStringWithDefaultNode extends RubyNode { | ||
|
||
private final String defaultValue; | ||
@Child private NameToJavaStringNode toJavaStringNode; | ||
|
||
public NameToJavaStringWithDefaultNode(RubyContext context, SourceSection sourceSection, String defaultValue) { | ||
super(context, sourceSection); | ||
this.defaultValue = defaultValue; | ||
toJavaStringNode = NameToJavaStringNodeGen.create(null); | ||
} | ||
|
||
public abstract String executeString(VirtualFrame frame, Object value); | ||
|
||
@Specialization | ||
public String doDefault(VirtualFrame frame, NotProvided value) { | ||
return toJavaStringNode.executeToJavaString(frame, defaultValue); | ||
} | ||
|
||
@Specialization(guards = "wasProvided(value)") | ||
public String doProvided(VirtualFrame frame, Object value) { | ||
return toJavaStringNode.executeToJavaString(frame, value); | ||
} | ||
|
||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
88 changes: 88 additions & 0 deletions
88
truffle/src/main/java/org/jruby/truffle/stdlib/readline/ConsoleHolder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
/* | ||
* Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. This | ||
* code is released under a tri EPL/GPL/LGPL license. You can use it, | ||
* redistribute it and/or modify it under the terms of the: | ||
* | ||
* Eclipse Public License version 1.0 | ||
* GNU General Public License version 2 | ||
* GNU Lesser General Public License version 2.1 | ||
* | ||
* This code is modified from the Readline JRuby extension module | ||
* implementation with the following header: | ||
* | ||
* Version: EPL 1.0/GPL 2.0/LGPL 2.1 | ||
* | ||
* The contents of this file are subject to the Eclipse Public | ||
* License Version 1.0 (the "License"); you may not use this file | ||
* except in compliance with the License. You may obtain a copy of | ||
* the License at http://www.eclipse.org/legal/epl-v10.html | ||
* | ||
* Software distributed under the License is distributed on an "AS | ||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | ||
* implied. See the License for the specific language governing | ||
* rights and limitations under the License. | ||
* | ||
* Copyright (C) 2006 Ola Bini <ola@ologix.com> | ||
* Copyright (C) 2006 Damian Steer <pldms@mac.com> | ||
* Copyright (C) 2008 Joseph LaFata <joe@quibb.org> | ||
* | ||
* Alternatively, the contents of this file may be used under the terms of | ||
* either of the GNU General Public License Version 2 or later (the "GPL"), | ||
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), | ||
* in which case the provisions of the GPL or the LGPL are applicable instead | ||
* of those above. If you wish to allow use of your version of this file only | ||
* under the terms of either the GPL or the LGPL, and not to allow others to | ||
* use your version of this file under the terms of the EPL, indicate your | ||
* decision by deleting the provisions above and replace them with the notice | ||
* and other provisions required by the GPL or the LGPL. If you do not delete | ||
* the provisions above, a recipient may use your version of this file under | ||
* the terms of any one of the EPL, the GPL or the LGPL. | ||
*/ | ||
package org.jruby.truffle.stdlib.readline; | ||
|
||
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; | ||
import jline.console.ConsoleReader; | ||
import jline.console.completer.Completer; | ||
import jline.console.history.History; | ||
import jline.console.history.MemoryHistory; | ||
|
||
import java.io.IOException; | ||
|
||
public class ConsoleHolder { | ||
|
||
private final ConsoleReader readline; | ||
private final Completer currentCompleter; | ||
private final History history; | ||
|
||
@TruffleBoundary | ||
public ConsoleHolder() { | ||
try { | ||
readline = new ConsoleReader(); | ||
} catch (IOException e) { | ||
throw new UnsupportedOperationException("Couldn't initialize readline", e); | ||
} | ||
|
||
readline.setHistoryEnabled(false); | ||
readline.setPaginationEnabled(true); | ||
readline.setBellEnabled(true); | ||
|
||
currentCompleter = new ReadlineNodes.RubyFileNameCompleter(); | ||
readline.addCompleter(currentCompleter); | ||
|
||
history = new MemoryHistory(); | ||
readline.setHistory(history); | ||
} | ||
|
||
public ConsoleReader getReadline() { | ||
return readline; | ||
} | ||
|
||
public Completer getCurrentCompleter() { | ||
return currentCompleter; | ||
} | ||
|
||
public History getHistory() { | ||
return history; | ||
} | ||
|
||
} |
Oops, something went wrong.