fl_print_format(" The %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_substitute_s, context.set.notable);
fl_print_format(" option takes priority over the %[%r%r%] option when matching the same Variable.%r%r", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_replace_s, context.set.notable, f_string_eol_s, f_string_eol_s);
+ fl_print_format(" Using both %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_total_s, context.set.notable);
+ fl_print_format(" and %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_whole_s, context.set.notable);
+ fl_print_format(" will result in a total representing the number of lines rather than number of Variables.%r", file.stream, f_string_eol_s);
+
+ fl_print_format(" Using all three of %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_total_s, context.set.notable);
+ fl_print_format(", %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_whole_s, context.set.notable);
+ fl_print_format(", and %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_line_s, context.set.notable);
+ fl_print_format(" will result in a total number of Variables at the given line in the whole file.%r", file.stream, f_string_eol_s);
+
+ fl_print_format(" Using %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_total_s, context.set.notable);
+ fl_print_format(" with %[%r%r%]", file.stream, context.set.notable, f_console_symbol_long_enable_s, iki_read_long_name_s, context.set.notable);
+ fl_print_format(" will result in a total number of Variables matching the Vocabulary name.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
+
fl_print_format(" The default behavior is to only display Content portion of the IKI Variable.%r%r", file.stream, f_string_eol_s, f_string_eol_s);
funlockfile(file.stream);
status = F_status_set_error(F_parameter);
}
- if (main->parameters.array[iki_read_parameter_total_e].result == f_console_result_found_e) {
- if (main->error.verbosity != f_console_verbosity_quiet_e) {
- fll_program_parameter_long_print_cannot_use_with(main->error, iki_read_long_object_s, iki_read_long_total_s);
- }
-
- status = F_status_set_error(F_parameter);
- }
-
data.mode = iki_read_mode_object_e;
}
- else if (main->parameters.array[iki_read_parameter_total_e].result == f_console_result_found_e) {
- data.mode = iki_read_mode_total_e;
- }
else {
// This is the default behavior, so there is no reason to check for the -c/--content parameter.
data.mode = iki_read_mode_content_e;
}
- if (main->parameters.array[iki_read_parameter_whole_e].result == f_console_result_found_e) {
- if (main->parameters.array[iki_read_parameter_total_e].result == f_console_result_found_e) {
- if (main->error.verbosity != f_console_verbosity_quiet_e) {
- fll_program_parameter_long_print_cannot_use_with(main->error, iki_read_long_whole_s, iki_read_long_total_s);
- }
-
- status = F_status_set_error(F_parameter);
- }
- }
-
if (F_status_is_error(status)) {
if (main->error.verbosity != f_console_verbosity_quiet_e) {
fll_print_dynamic_raw(f_string_eol_s, main->error.to.stream);
f_status_t status = F_none;
f_iki_data_t iki_data = f_iki_data_t_initialize;
- if (data->main->parameters.array[iki_read_parameter_whole_e].result == f_console_result_found_e) {
+ if (data->main->parameters.array[iki_read_parameter_whole_e].result == f_console_result_found_e && data->main->parameters.array[iki_read_parameter_total_e].result == f_console_result_none_e) {
f_string_range_t buffer_range = macro_f_string_range_t_initialize2(data->buffer.used);
status = iki_read_process_at(data, &buffer_range);
if (status == F_true) {
- if (buffer_range.start > data->buffer.used) {
- return F_data_not;
- }
+ if (buffer_range.start > data->buffer.used) return F_data_not;
}
else if (status == F_data_not) {
return F_data_not;
status = iki_read_process_buffer_ranges_whole(data, buffer_range, &iki_data, &iki_data.vocabulary);
}
}
- else if (data->mode == iki_read_mode_total_e) {
- status = iki_read_process_buffer_total(data, &iki_data);
+ else if (data->main->parameters.array[iki_read_parameter_total_e].result == f_console_result_found_e && data->main->parameters.array[iki_read_parameter_whole_e].result == f_console_result_found_e) {
+ if (data->main->parameters.array[iki_read_parameter_line_e].result == f_console_result_additional_e) {
+ status = iki_read_process_buffer_total(data, &iki_data);
+ }
+ else {
+ f_number_unsigned_t total = 0;
+
+ for (f_number_unsigned_t i = 0; i < data->buffer.used; ++i) {
+ if (data->buffer.string[i] == f_string_eol_s.string[0]) ++total;
+ } // for
+
+ fll_print_format("%ul%r", data->main->output.to.stream, total, f_string_eol_s);
+ }
}
else {
f_string_range_t buffer_range = macro_f_string_range_t_initialize2(data->buffer.used);
f_status_t status = F_none;
- bool unmatched = F_true;
-
{
f_state_t state = macro_f_state_t_initialize(iki_read_common_allocation_large_d, iki_read_common_allocation_small_d, 0, 0, &fll_program_standard_signal_state, 0, (void *) data->main, 0);
return status;
}
- for (f_array_length_t i = 0; i < iki_data->delimits.used; ++i) {
+ if (data->main->parameters.array[iki_read_parameter_total_e].result == f_console_result_found_e && data->main->parameters.array[iki_read_parameter_name_e].result == f_console_result_none_e) {
+ if (data->main->parameters.array[iki_read_parameter_at_e].result == f_console_result_additional_e) {
+ fll_print_format("%ul%r", data->main->output.to.stream, data->at < iki_data->variable.used ? 1 : 0, f_string_eol_s);
+ }
+ else {
+ fll_print_format("%ul%r", data->main->output.to.stream, iki_data->variable.used, f_string_eol_s);
+ }
+
+ return F_none;
+ }
+
+ f_array_length_t i = 0;
+
+ for (; i < iki_data->delimits.used; ++i) {
data->buffer.string[iki_data->delimits.array[i]] = f_iki_syntax_placeholder_s.string[0];
} // for
const bool content_only = data->mode == iki_read_mode_content_e;
+ bool unmatched = F_true;
iki_read_substitution_t replacements[iki_data->variable.used];
iki_read_substitution_t wraps[iki_data->variable.used];
memset(reassignments, 0, sizeof(iki_read_substitutions_t) * iki_data->variable.used);
memset(substitutionss, 0, sizeof(iki_read_substitutions_t) * iki_data->variable.used);
- if (data->mode == iki_read_mode_literal_e || data->mode == iki_read_mode_content_e) {
+ if (data->mode == iki_read_mode_literal_e || (data->mode == iki_read_mode_content_e && data->main->parameters.array[iki_read_parameter_total_e].result == f_console_result_none_e)) {
status = iki_read_replacements_identify(data, &iki_data->vocabulary, replacements);
if (F_status_is_error(status)) {
if (F_status_is_error(status)) {
fll_error_print(data->main->error, F_status_set_fine(status), "iki_read_substitutions_identify", F_true);
- f_array_length_t i = 0;
-
- for (; i < iki_data->variable.used; ++i) {
+ for (i = 0; i < iki_data->variable.used; ++i) {
macro_iki_read_substitutions_t_delete_simple(reassignments[i]);
} // for
f_string_dynamic_t name = f_string_dynamic_t_initialize;
f_array_length_t index = 0;
- f_array_length_t i = 0;
f_array_length_t j = 0;
f_array_length_t matches = 0;
+
buffer_range->start = 0;
- for (; i < data->main->parameters.array[iki_read_parameter_name_e].values.used; ++i) {
+ for (i = 0; i < data->main->parameters.array[iki_read_parameter_name_e].values.used; ++i) {
index = data->main->parameters.array[iki_read_parameter_name_e].values.array[i];
name.used = 0;
if (F_status_is_error(status)) {
fll_error_print(data->main->error, F_status_set_fine(status), "f_string_dynamic_append_nulless", F_true);
- f_array_length_t i = 0;
-
- for (; i < iki_data->variable.used; ++i) {
- macro_iki_read_substitutions_t_delete_simple(reassignments[i]);
+ for (j = 0; j < iki_data->variable.used; ++j) {
+ macro_iki_read_substitutions_t_delete_simple(reassignments[j]);
} // for
- for (i = 0; i < iki_data->variable.used; ++i) {
- macro_iki_read_substitutions_t_delete_simple(substitutionss[i]);
+ for (j = 0; j < iki_data->variable.used; ++j) {
+ macro_iki_read_substitutions_t_delete_simple(substitutionss[j]);
} // for
f_string_dynamic_resize(0, &name);
if (matches++ != data->at) continue;
}
- if (replacements[j].replace.used || wraps[j].replace.used || wraps[j].with.used || substitutionss[j].used || reassignments[j].used) {
- iki_read_substitutions_print(data, *iki_data, *ranges, replacements[j], wraps[j], substitutionss[j], reassignments[j], j, content_only);
+ if (data->main->parameters.array[iki_read_parameter_total_e].result == f_console_result_found_e) {
+ if (data->main->parameters.array[iki_read_parameter_at_e].result == f_console_result_none_e) {
+ ++matches;
+ }
}
else {
- f_print_dynamic_partial(data->buffer, ranges->array[j], data->main->output.to.stream);
+ if (replacements[j].replace.used || wraps[j].replace.used || wraps[j].with.used || substitutionss[j].used || reassignments[j].used) {
+ iki_read_substitutions_print(data, *iki_data, *ranges, replacements[j], wraps[j], substitutionss[j], reassignments[j], j, content_only);
+ }
+ else {
+ f_print_dynamic_partial(data->buffer, ranges->array[j], data->main->output.to.stream);
+ }
+
+ f_print_dynamic_raw(f_string_eol_s, data->main->output.to.stream);
}
-
- f_print_dynamic_raw(f_string_eol_s, data->main->output.to.stream);
}
} // for
funlockfile(data->main->output.to.stream);
} // for
+ if (data->main->parameters.array[iki_read_parameter_total_e].result == f_console_result_found_e) {
+ fll_print_format("%ul%r", data->main->output.to.stream,
+ data->main->parameters.array[iki_read_parameter_at_e].result == f_console_result_additional_e
+ ? data->at < matches ? 1 : 0
+ : matches, f_string_eol_s);
+ }
+
f_string_dynamic_resize(0, &name);
if (unmatched) {
else {
flockfile(data->main->output.to.stream);
- for (f_array_length_t i = 0; i < ranges->used; ++i) {
+ for (i = 0; i < ranges->used; ++i) {
if (replacements[i].replace.used || wraps[i].replace.used || wraps[i].with.used || substitutionss[i].used || reassignments[i].used) {
iki_read_substitutions_print(data, *iki_data, *ranges, replacements[i], wraps[i], substitutionss[i], reassignments[i], i, content_only);
status = F_data_not;
}
- f_array_length_t i = 0;
-
- for (; i < iki_data->variable.used; ++i) {
+ for (i = 0; i < iki_data->variable.used; ++i) {
macro_iki_read_substitutions_t_delete_simple(reassignments[i]);
} // for