mirror of
https://github.com/comby-tools/comby.git
synced 2024-09-11 13:25:36 +03:00
add .file alias for .file.path and fix filepath
This commit is contained in:
parent
fbe48cb30b
commit
0a29179410
@ -82,8 +82,11 @@ let process_single_source
|
||||
| Some rewrite_template ->
|
||||
match matches with
|
||||
| [] ->
|
||||
(* If there are no matches, return the original source (for editor support). *)
|
||||
(* If there are no matches, return the original source (for editor support) if substitute_in_place is active. *)
|
||||
if substitute_in_place then
|
||||
Replacement ([], input_text, 0)
|
||||
else
|
||||
Nothing
|
||||
| matches ->
|
||||
(* FIXME this should be configured where it's done in command_configuration.ml *)
|
||||
let external_handler = External_semantic.lsif_hover in
|
||||
|
@ -111,11 +111,15 @@ let apply
|
||||
let source = rewrite_substitute (Template.to_string t) env in
|
||||
let configuration = Configuration.create ~match_kind:Fuzzy () in
|
||||
let configuration = { configuration with substitute_in_place } in
|
||||
let matches = match_all ~configuration ~template ~source () in
|
||||
let matches = match_all ?filepath ~configuration ~template ~source () in
|
||||
let source = if substitute_in_place then Some source else None in
|
||||
let result = Rewrite.all ~metasyntax ?source ~rewrite_template matches in
|
||||
let result = Rewrite.all ~metasyntax ?filepath ?source ~rewrite_template matches in
|
||||
if Option.is_empty result then
|
||||
true, Some env (* rewrites are always sat. *)
|
||||
(if substitute_in_place then
|
||||
(* rewrites are always sat for in-place. always unsat for newline-sep. *)
|
||||
true, Some env
|
||||
else
|
||||
false, Some env)
|
||||
else
|
||||
let Replacement.{ rewritten_source; _ } = Option.value_exn result in
|
||||
(* substitute for variables that are in the outside scope *)
|
||||
|
@ -154,7 +154,7 @@ module Make (Language : Types.Language.S) (Meta : Metasyntax.S) (Ext : External.
|
||||
| None ->
|
||||
if rewrite then
|
||||
begin
|
||||
let result, _ = Template.substitute (Template.parse !rewrite_template) !current_environment_ref in
|
||||
let result, _ = Template.substitute ?filepath:!filepath_ref (Template.parse !rewrite_template) !current_environment_ref in
|
||||
(* Don't just append, but replace the match context including constant
|
||||
strings. I.e., somewhere where we are appending the parth that matched, it
|
||||
shouldn't, and instead just ignore. *)
|
||||
@ -193,7 +193,7 @@ module Make (Language : Types.Language.S) (Meta : Metasyntax.S) (Ext : External.
|
||||
if debug then Format.printf "Some new env %s@." @@ Match.Environment.to_string env;
|
||||
current_environment_ref := env;
|
||||
begin
|
||||
let result, _ = Template.substitute (Template.parse !rewrite_template) !current_environment_ref in
|
||||
let result, _ = Template.substitute ?filepath:!filepath_ref (Template.parse !rewrite_template) !current_environment_ref in
|
||||
(* Don't just append, but replace the match context including constant
|
||||
strings. I.e., somewhere where we are appending the parth that matched, it
|
||||
shouldn't, and instead just ignore. *)
|
||||
|
@ -5,22 +5,8 @@ let debug =
|
||||
| exception Not_found -> false
|
||||
| _ -> true
|
||||
|
||||
let map_aliases
|
||||
(module Metasyntax : Metasyntax.S)
|
||||
(module External : External.S)
|
||||
template
|
||||
parent_rule =
|
||||
let module Parser = Rule.Make (Metasyntax) (External) in
|
||||
List.fold Metasyntax.aliases
|
||||
~init:(template, parent_rule)
|
||||
~f:(fun (template, parent_rule) Types.Metasyntax.{ pattern; match_template; rule } ->
|
||||
let append_rule (module Parser : Types.Rule.S) rule parent_rule =
|
||||
let open Option in
|
||||
match String.substr_index template ~pattern with
|
||||
| None -> template, parent_rule
|
||||
| Some _ ->
|
||||
let template' = String.substr_replace_all template ~pattern ~with_:match_template in
|
||||
if debug then Format.printf "Substituted: %s@." template';
|
||||
let rule' =
|
||||
let rule =
|
||||
rule
|
||||
>>| Parser.create
|
||||
@ -33,5 +19,25 @@ let map_aliases
|
||||
| None, Some rule -> Some rule
|
||||
| Some parent_rule, None -> Some parent_rule
|
||||
| None, None -> None
|
||||
|
||||
let map_template (module Parser : Types.Rule.S) template pattern match_template rule parent_rule =
|
||||
let template' = String.substr_replace_all template ~pattern ~with_:match_template in
|
||||
if debug then Format.printf "Substituted: %s@." template';
|
||||
let rule' = append_rule (module Parser) rule parent_rule in
|
||||
template', rule'
|
||||
|
||||
let map_aliases
|
||||
(module Metasyntax : Metasyntax.S)
|
||||
(module External : External.S)
|
||||
template
|
||||
parent_rule =
|
||||
let module Parser = Rule.Make (Metasyntax) (External) in
|
||||
List.fold Metasyntax.aliases
|
||||
~init:(template, parent_rule)
|
||||
~f:(fun (template, parent_rule) Types.Metasyntax.{ pattern; match_template; rule } ->
|
||||
let template', parent_rule' =
|
||||
match String.substr_index template ~pattern with
|
||||
| None -> template, parent_rule
|
||||
| Some _ -> map_template (module Parser) template pattern match_template rule parent_rule
|
||||
in
|
||||
template', rule')
|
||||
template', parent_rule')
|
||||
|
@ -88,6 +88,7 @@ module Make (Metasyntax : Types.Metasyntax.S) (External : Types.External.S) : Ty
|
||||
| "column"
|
||||
| "column.start" -> ColumnStart
|
||||
| "column.end" -> ColumnEnd
|
||||
| "file"
|
||||
| "file.path" -> FilePath
|
||||
| "file.name" -> FileName
|
||||
| "file.directory" -> FileDirectory
|
||||
@ -119,6 +120,7 @@ module Make (Metasyntax : Types.Metasyntax.S) (External : Types.External.S) : Ty
|
||||
; string "file.path"
|
||||
; string "file.name"
|
||||
; string "file.directory"
|
||||
; string "file"
|
||||
; string "lowercase"
|
||||
; string "UPPERCASE"
|
||||
; string "Capitalize"
|
||||
|
Loading…
Reference in New Issue
Block a user