Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

fix: handle multiple diff lines #32

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
yeonjuan merged 3 commits into main from fix-31
Sep 18, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions .github/workflows/main.yml
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,15 @@ jobs:
name: CI
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set node.js 16.x
uses: actions/setup-node@v3
- uses: actions/checkout@v4
- name: set node.js 20.x
uses: actions/setup-node@v4
with:
node-version: 16.x
- uses: borales/actions-yarn@v4
with:
cmd: install
- uses: borales/actions-yarn@v4
with:
cmd: check:all
node-version: 20.x
- name: Install
run: yarn install --immutable
- name: Check
run: yarn run check:all
- name: Code coverage report
uses: codecov/codecov-action@v2
with:
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,9 @@ coverage
dist
.parcel-cache
demo/parse-git-diff.js
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
Binary file modified .yarn/install-state.gz
View file Open in desktop
Binary file not shown.
893 changes: 893 additions & 0 deletions .yarn/releases/yarn-4.0.2.cjs
View file Open in desktop

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .yarnrc.yml
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
yarnPath: .yarn/releases/yarn-4.0.2.cjs
nodeLinker: node-modules
3 changes: 2 additions & 1 deletion package.json
View file Open in desktop
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,6 @@
"keywords": [
"git",
"git diff"
]
],
"packageManager": "yarn@4.0.2"
}
77 changes: 77 additions & 0 deletions src/__fixtures__/31
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
diff --git a/var/folders/kt/zd3bfncd0c3gjx25hbcq483c0000gn/T/epicshop/diff/advanced-react-apis/04.01.solution/7h2jowvfi2q/index.test.tsx b/var/folders/kt/zd3bfncd0c3gjx25hbcq483c0000gn/T/epicshop/diff/advanced-react-apis/04.01.solution/7h2jowvfi2q/index.test.tsx
new file mode 100644
index 0000000..e69de29
diff --git a/var/folders/kt/zd3bfncd0c3gjx25hbcq483c0000gn/T/epicshop/diff/advanced-react-apis/04.01.problem/7h2jowvfi2q/index.tsx b/var/folders/kt/zd3bfncd0c3gjx25hbcq483c0000gn/T/epicshop/diff/advanced-react-apis/04.01.solution/7h2jowvfi2q/index.tsx
index 9913856..4d68325 100644
--- a/var/folders/kt/zd3bfncd0c3gjx25hbcq483c0000gn/T/epicshop/diff/advanced-react-apis/04.01.problem/7h2jowvfi2q/index.tsx
+++ b/var/folders/kt/zd3bfncd0c3gjx25hbcq483c0000gn/T/epicshop/diff/advanced-react-apis/04.01.solution/7h2jowvfi2q/index.tsx
@@ -1,4 +1,4 @@
-import { useCallback, useEffect, useState } from 'react'
+import { createContext, useEffect, useState, use, useCallback } from 'react'
import * as ReactDOM from 'react-dom/client'
import {
type BlogPost,
@@ -7,15 +7,16 @@ import {
} from '#shared/blog-posts'
import { setGlobalSearchParams } from '#shared/utils'

-// 🦺 create a SearchParamsTuple type here that's a readonly array of two elements:
-// - the first element is a URLSearchParams instance
-// - the second element is typeof setGlobalSearchParams
-// 🐨 create a SearchParamsContext that is of this type
-// 💰 let's start with this as the default value (we'll improve it next):
-// [new URLSearchParams(window.location.search), setGlobalSearchParams]
+type SearchParamsTuple = readonly [
+ URLSearchParams,
+ typeof setGlobalSearchParams,
+]
+const SearchParamsContext = createContext<SearchParamsTuple>([
+ new URLSearchParams(window.location.search),
+ setGlobalSearchParams,
+])

-// 🐨 change this to SearchParamsProvider and accept children
-function useSearchParams() {
+function SearchParamsProvider({ children }: { children: React.ReactNode }) {
const [searchParams, setSearchParamsState] = useState(
() => new URLSearchParams(window.location.search),
)
@@ -46,23 +47,29 @@ function useSearchParams() {
[],
)

- // 🐨 instead of returning this, render the SearchParamsContext and
- // provide this tuple as the value
- // 💰 make sure to render the children as well!
- return [searchParams, setSearchParams] as const
+ const searchParamsTuple = [searchParams, setSearchParams] as const
+
+ return (
+ <SearchParamsContext value={searchParamsTuple}>
+ {children}
+ </SearchParamsContext>
+ )
}

-// 🐨 create a useSearchParams hook here that returns use(SearchParamsContext)
+function useSearchParams() {
+ return use(SearchParamsContext)
+}

const getQueryParam = (params: URLSearchParams) => params.get('query') ?? ''

function App() {
return (
- // 🐨 wrap this in the SearchParamsProvider
- <div className="app">
- <Form />
- <MatchingPosts />
- </div>
+ <SearchParamsProvider>
+ <div className="app">
+ <Form />
+ <MatchingPosts />
+ </div>
+ </SearchParamsProvider>
)
}
10 changes: 10 additions & 0 deletions src/__tests__/31.test.ts
View file Open in desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { getFixture } from './test-utils';
import parseGitDiff from '../parse-git-diff';

describe.only('issue 31', () => {
const fixture = getFixture('31');

it('parse `31`', () => {
expect(parseGitDiff(fixture)).toMatchSnapshot();
});
});
Loading
Loading

AltStyle によって変換されたページ (->オリジナル) /