Skip to content

Instantly share code, notes, and snippets.

View wendyliga's full-sized avatar
👨‍💻
Code in Progress

Wendy Liga wendyliga

👨‍💻
Code in Progress
View GitHub Profile
@wendyliga
wendyliga / github_models_manifold_v2.py
Last active August 13, 2025 04:40
Open WebUI Github Models Manifold V2
"""
title: GitHub Models Manifold V2
author: wendyliga
author_url: https://github.com/wendyliga
project_url: https://gist.github.com/wendyliga/a1247718c105a45d86e84a1cae60c20e
version: 1.0
license: Apache License 2.0
description: A manifold pipeline for interacting with github models. modified from https://openwebui.com/f/jscheah/github_models_manifold to adapt with new endpoint.
"""
@wendyliga
wendyliga / TCA_README_ID.MD
Last active September 25, 2023 04:09
swift-composable-architecture readme indonesia translation

The Composable Architecture

Composable Architecture (pendeknya TCA) adalah library untuk membangun aplikasi dengan cara yang konsisten dan mudah dimengerti, dengan komposisi, testing, dan design ergonomis. TCA dapat digunakan di SwiftUI, UIKit, dan lainnya, dan di platform Apple apa pun (iOS, macOS, tvOS, dan watchOS)

@propertyWrapper
struct NonEmptyString {
var wrappedValue: String?
init(wrappedValue: String?) {
if wrappedValue?.isEmpty == true {
self.wrappedValue = nil
} else {
self.wrappedValue = wrappedValue
}
@wendyliga
wendyliga / selected-rounded-corner-ASImageNode.swift
Created November 4, 2019 10:21
Implement layer masking with bazier path
image.imageModificationBlock = { image in
// try to set rounded corner only to top left and bottom left
var modifiedImage: UIImage?
var rect = CGRect(origin: CGPoint.zero, size: image.size)
UIGraphicsBeginImageContextWithOptions(image.size, false, UIScreen.main.scale)
let maskPath = UIBezierPath(roundedRect: rect, byRoundingCorners: [UIRectCorner.topLeft, UIRectCorner.bottomLeft], cornerRadii: CGSize(width: 10, height: 10))
maskPath.addClip()
image.draw(in: rect)
modifiedImage = UIGraphicsGetImageFromCurrentImageContext()
@wendyliga
wendyliga / Test.h
Last active October 25, 2019 14:30
/**
myProtocol.h
*/
@protocol MyProtocol <NSObject>
@property (nonatomic) BOOL myVariable;
@end
/**
MyClass.h
*/
@wendyliga
wendyliga / ViewController.swift
Created September 25, 2019 09:11
TextureGram Main View Controller
import AsyncDisplayKit
class ViewController: ASViewController<ASDisplayNode> {
private let storyNode: StoryNode
private let postNode: PostNode
init() {
self.storyNode = StoryNode(stories: Story.generateDummyStory())
self.postNode = PostNode(posts: Post.generateDummyPosts())
@wendyliga
wendyliga / StoryNode.swift
Created September 25, 2019 09:08
TextureGram StoryNode
import AsyncDisplayKit
class StoryNode: ASCollectionNode{
let stories: [Story]
init(stories: [Story]) {
self.stories = stories
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
@wendyliga
wendyliga / StoryCell.swift
Created September 25, 2019 09:04
TextureGram StoryCell
import AsyncDisplayKit
class StoryCell: ASCellNode {
private let story: Story
// MARK: - Nodes
private let userPicture: ASImageNode
private let userName: ASTextNode
init(story: Story) {
@wendyliga
wendyliga / PostNode.swift
Created September 25, 2019 08:56
TextureGram PostNode
import AsyncDisplayKit
class PostNode: ASTableNode {
private let posts: [Post]
init(posts: [Post]) {
self.posts = posts
super.init(style: .plain)
@wendyliga
wendyliga / PostCell.swift
Created September 25, 2019 08:14
TextureGram PostCell
import AsyncDisplayKit
class PostCell: ASCellNode {
let post: Post
// MARK: - Nodes
let headerNode: HeaderNode
let postImage: ASImageNode
let actionNode: ActionNode