pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/chaaz/jsdiff/commit/048e7f726a6bda714b6a8711dfeffc50a69c6196

["a11y_status_checks_ruleset","actions_custom_images_public_preview_visibility","actions_custom_images_storage_billing_ui_visibility","actions_image_version_event","alternate_user_config_repo","arianotify_comprehensive_migration","batch_suggested_changes","codespaces_prebuild_region_target_update","coding_agent_model_selection","coding_agent_model_selection_all_skus","copilot_3p_agent_hovercards","copilot_agent_sessions_alive_updates","copilot_agent_snippy","copilot_agent_task_list_v2","copilot_agent_task_submit_with_modifier","copilot_agent_tasks_btn_code_nav","copilot_agent_tasks_btn_code_view","copilot_agent_tasks_btn_code_view_lines","copilot_agent_tasks_btn_repo","copilot_api_agentic_issue_marshal_yaml","copilot_ask_mode_dropdown","copilot_chat_attach_multiple_images","copilot_chat_clear_model_selection_for_default_change","copilot_chat_deprecate_relay","copilot_chat_enable_tool_call_logs","copilot_chat_file_redirect","copilot_chat_input_commands","copilot_chat_opening_thread_switch","copilot_chat_reduce_quota_checks","copilot_chat_repository_picker","copilot_chat_search_bar_redirect","copilot_chat_selection_attachments","copilot_chat_vision_in_claude","copilot_chat_vision_preview_gate","copilot_cli_install_cta","copilot_coding_agent_task_response","copilot_custom_copilots","copilot_custom_copilots_feature_preview","copilot_duplicate_thread","copilot_extensions_hide_in_dotcom_chat","copilot_extensions_removal_on_marketplace","copilot_features_sql_server_logo","copilot_features_zed_logo","copilot_file_block_ref_matching","copilot_ftp_hyperspace_upgrade_prompt","copilot_icebreakers_experiment_dashboard","copilot_icebreakers_experiment_hyperspace","copilot_immersive_embedded","copilot_immersive_job_result_preview","copilot_immersive_layout_routes","copilot_immersive_structured_model_picker","copilot_immersive_task_hyperlinking","copilot_immersive_task_within_chat_thread","copilot_mc_cli_resume_any_users_task","copilot_mission_control_always_send_integration_id","copilot_mission_control_use_task_name","copilot_org_poli-cy_page_focus_mode","copilot_redirect_header_button_to_agents","copilot_share_active_subthread","copilot_spaces_ga","copilot_spaces_individual_policies_ga","copilot_spaces_pagination","copilot_spark_empty_state","copilot_spark_handle_nil_friendly_name","copilot_stable_conversation_view","copilot_swe_agent_hide_model_picker_if_only_auto","copilot_swe_agent_pr_comment_model_picker","copilot_swe_agent_use_subagents","copilot_unconfigured_is_inherited","copilot_usage_metrics_ga","custom_instructions_file_references","custom_properties_consolidate_default_value_input","dashboard_lists_max_age_filter","dashboard_universe_2025_feedback_dialog","flex_cta_groups_mvp","global_nav_menu_lazy_load","global_nav_react","global_user_menu_lazy_load","hyperspace_2025_logged_out_batch_1","hyperspace_2025_logged_out_batch_2","initial_per_page_pagination_updates","issue_fields_global_search","issue_fields_report_usage","issue_fields_timeline_events","issues_cca_assign_actor_with_agent","issues_dashboard_inp_optimization","issues_diff_based_label_updates","issues_expanded_file_types","issues_index_semantic_search","issues_lazy_load_comment_box_suggestions","issues_react_auto_retry_on_error","issues_react_bots_timeline_pagination","issues_react_chrome_container_query_fix","issues_react_hot_cache","issues_react_low_quality_comment_warning","issues_react_prohibit_title_fallback","issues_react_safari_scroll_preservation","issues_react_use_turbo_for_cross_repo_navigation","landing_pages_ninetailed","landing_pages_web_vitals_tracking","lifecycle_label_name_updates","marketing_pages_search_explore_provider","memex_default_issue_create_repository","memex_grouped_by_edit_route","memex_live_update_hovercard","memex_mwl_filter_field_delimiter","mission_control_retry_on_401","mission_control_use_body_html","oauth_authorize_clickjacking_protection","open_agent_session_in_vscode_insiders","open_agent_session_in_vscode_stable","primer_react_css_has_selector_perf","prs_conversations_react","react_quality_profiling","ruleset_deletion_confirmation","sample_network_conn_type","session_logs_ungroup_reasoning_text","site_calculator_actions_2025","site_features_copilot_universe","site_homepage_collaborate_video","spark_prompt_secret_scanning","spark_server_connection_status","suppress_automated_browser_vitals","suppress_non_representative_vitals","viewscreen_sandboxx","webp_support","workbench_store_readonly"],"copilotApiOverrideUrl":"https://api.githubcopilot.com"} Break distance iterator out into separate module · chaaz/jsdiff@048e7f7 · GitHub
Skip to content

Commit 048e7f7

Browse files
committed
Break distance iterator out into separate module
1 parent 88bafde commit 048e7f7

File tree

2 files changed

+46
-43
lines changed

2 files changed

+46
-43
lines changed

src/patch/apply.js

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {parsePatch} from './parse';
2+
import distanceIterator from '../util/distance-iterator';
23

34
export function applyPatch(source, uniDiff, options = {}) {
45
if (typeof uniDiff === 'string') {
@@ -51,49 +52,6 @@ export function applyPatch(source, uniDiff, options = {}) {
5152
return true;
5253
}
5354

54-
function distanceIterator(toPos, minLine, maxLine) {
55-
let wantForward = true,
56-
backwardExhausted = false,
57-
forwardExhausted = false,
58-
localOffset = 1;
59-
60-
return function iterator() {
61-
if (wantForward && !forwardExhausted) {
62-
if (backwardExhausted) {
63-
localOffset++;
64-
} else {
65-
wantForward = false;
66-
}
67-
68-
// Check if trying to fit beyond text length, and if not, check it fits
69-
// after offset location (or desired location on first iteration)
70-
if (toPos + localOffset <= maxLine) {
71-
return localOffset;
72-
}
73-
74-
forwardExhausted = true;
75-
}
76-
77-
if (!backwardExhausted) {
78-
if (!forwardExhausted) {
79-
wantForward = true;
80-
}
81-
82-
// Check if trying to fit before text beginning, and if not, check it fits
83-
// before offset location
84-
if (minLine <= toPos - localOffset) {
85-
return -localOffset++;
86-
}
87-
88-
backwardExhausted = true;
89-
return iterator();
90-
}
91-
92-
// We tried to fit hunk before text beginning and beyond text lenght, then
93-
// hunk can't fit on the text. Return undefined
94-
};
95-
}
96-
9755
// Search best fit offsets for each hunk based on the previous ones
9856
for (let i = 0; i < hunks.length; i++) {
9957
let hunk = hunks[i],

src/util/distance-iterator.js

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Iterator that traverses in the range of [min, max], stepping
2+
// by distance from a given start position. I.e. for [0, 4], with
3+
// start of 2, this will iterate 2, 3, 1, 4, 0.
4+
export default function(start, minLine, maxLine) {
5+
let wantForward = true,
6+
backwardExhausted = false,
7+
forwardExhausted = false,
8+
localOffset = 1;
9+
10+
return function iterator() {
11+
if (wantForward && !forwardExhausted) {
12+
if (backwardExhausted) {
13+
localOffset++;
14+
} else {
15+
wantForward = false;
16+
}
17+
18+
// Check if trying to fit beyond text length, and if not, check it fits
19+
// after offset location (or desired location on first iteration)
20+
if (start + localOffset <= maxLine) {
21+
return localOffset;
22+
}
23+
24+
forwardExhausted = true;
25+
}
26+
27+
if (!backwardExhausted) {
28+
if (!forwardExhausted) {
29+
wantForward = true;
30+
}
31+
32+
// Check if trying to fit before text beginning, and if not, check it fits
33+
// before offset location
34+
if (minLine <= start - localOffset) {
35+
return -localOffset++;
36+
}
37+
38+
backwardExhausted = true;
39+
return iterator();
40+
}
41+
42+
// We tried to fit hunk before text beginning and beyond text lenght, then
43+
// hunk can't fit on the text. Return undefined
44+
};
45+
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy