Skip to content

Instantly share code, notes, and snippets.

View bannzai's full-sized avatar
スターください

bannzai bannzai

スターください
View GitHub Profile
@bannzai
bannzai / add_sendable.sh
Last active June 16, 2024 02:42
struct, enumに脳死でSendableをつけるsed。Viewは除外
#!/bin/bash
TARGET_DIR=$1
echo "やるお"
for file in $(find "$TARGET_DIR" -name "*.swift"); do
# struct User: * { の場合。ただし、View適応は除く
sed -i '' -E '/struct [A-Za-z0-9_]+: [^{]*View[^{]*\{/!s/(struct [A-Za-z0-9_]+: [^{]*)\{/\1, Sendable {/g' "$file"
sed -i '' -E '/enum [A-Za-z0-9_]+: [^{]*View[^{]*\{/!s/(enum [A-Za-z0-9_]+: [^{]*)\{/\1, Sendable {/g' "$file"
import SwiftUI
struct AsyncAction<Content: View>: View {
@State var isLoading = false
@State var task: @Sendable @MainActor () async -> Void
@ViewBuilder let content: (Bool, @escaping () -> Void) -> Content
var body: some View {
content(isLoading, {
if isLoading {
[
{
"word": "Asshole",
"kana": "アスホール",
"meaning": "いやな奴(Ass=お尻、Hole=穴)",
"notice": "「うざい野郎」「ろくでなし」"
},
{
"word": "あばずれ",
"kana": "あばずれ",
@bannzai
bannzai / CarouselView.swift
Last active January 16, 2024 14:32
CarouselView.swift
import SwiftUI
struct Item: Identifiable {
let id = UUID()
var text = ""
var color: Color = .clear
}
struct CarouselView: View {
var items: [Item] = [
@bannzai
bannzai / add_print_changes.sh
Last active June 27, 2024 00:55
Self._printChanges() を入れたり外したり
#!/bin/zsh
TARGET_DIR=$1
SCRIPT_DIR="$(cd `dirname $0` && pwd -P)"
REPOSITORY_ROOT_DIR="$(cd $SCRIPT_DIR && cd .. && pwd -P)"
find "$REPOSITORY_ROOT_DIR/$TARGET_DIR" -name "*.swift" -exec sed -i '' '/var body: some View {/a\
let _ = Self._printChanges()
' {} \;
@bannzai
bannzai / generate_translated_localizable_strings.py
Created October 6, 2023 09:50
generate_translated_localizable_strings.py
import json
import os
import openai
openai.organization = os.environ.get("OPENAI_ORGANIZATION")
openai.api_key = os.environ.get("OPENAI_API_KEY")
langs = ['fr']
@bannzai
bannzai / NavigationControllerApp.swift
Last active August 8, 2023 11:30
NavigationStack
class NavigationController: ObservableObject {
@Published var path: NavigationPath = .init()
var destinations: [UUID: () -> any View] = [:]
func push(id: UUID = .init(), @ViewBuilder destination: @escaping () -> some View) {
destinations[id] = destination
path.append(id)
}
func pop() {
path.removeLast()
import SwiftUI
import AVKit
struct ContentView: View {
@State var soundLabelIsShows = false
var body: some View {
ZStack(alignment: .center) {
Image("kane")
.resizable()
@bannzai
bannzai / search.swift
Last active December 23, 2022 11:55
SwiftUI search with text example
import SwiftUI
import Combine
struct SearchView: View {
@StateObject var observer = SearchTextObserver()
var body: some View {
VStack {
TextField("TextField", text: $observer.searchText)
.onChange(of: observer.throttleText) { text in
print("Call API with \(text)")
struct SearchView: View {
@State var text: String
@FocusState var focused: Bool
@Async<[Item]> var async
var body: some View {
VStack {
TextField("Placeholder", text: $text)
.focused($focused)
.onSubmit {